const Xs = $e;
(function(n, e) {
  const t = $e, x = n();
  for (; []; )
    try {
      if (-parseInt(t(170)) / 1 * (-parseInt(t(168)) / 2) + parseInt(t(165)) / 3 * (parseInt(t(159)) / 4) + parseInt(t(164)) / 5 * (parseInt(t(166)) / 6) + -parseInt(t(169)) / 7 * (-parseInt(t(156)) / 8) + parseInt(t(160)) / 9 + -parseInt(t(154)) / 10 * (parseInt(t(155)) / 11) + -parseInt(t(163)) / 12 * (parseInt(t(158)) / 13) === e)
        break;
      x.push(x.shift());
    } catch {
      x.push(x.shift());
    }
})(Cx, 109699);
function Ur(n, e, t) {
  return n[0] = e[0] + t[0], n[1] = e[1] + t[1], n;
}
function Ki(n, e, t) {
  return n[0] = e[0] * t, n[1] = e[1] * t, n;
}
function $e(n, e) {
  const t = Cx();
  return $e = function(x, s) {
    return x = x - 154, t[x];
  }, $e(n, e);
}
function Vr(n, e, t) {
  return n[0] = e[0] * t, n[1] = e[1] * t, n;
}
function Jr(n, e) {
  return n[0] = -e[0], n[1] = -e[1], n;
}
function Cx() {
  const n = ["242195yxFwdi", "3LNpdqV", "6eBdnzv", "negate", "214hvByoj", "7MyXGoR", "2039fQEMKe", "10KCWFxf", "1419253enAeno", "1748752CcyPBc", "multiplyC", "5180227dfmlng", "45336qFaLLK", "1265949zIDdjO", "sqrt", "add", "12HSUUYw"];
  return Cx = function() {
    return n;
  }, Cx();
}
function Gr(n, e) {
  let x = Math[$e(161)](e[0] * e[0] + e[1] * e[1]);
  return x == 0 ? (n[0] = 0, n[0] = 0, n) : (n[0] = e[0] / x, n[1] = e[1] / x, n);
}
function qr(n) {
  return Math[$e(161)](n[0] * n[0] + n[1] * n[1]);
}
function Zi(n, e) {
  return n[0] * e[0] + n[1] * e[1];
}
function Kr(n, e, t) {
  let x = Zi(e, t);
  return Ki(n, t, x), n;
}
class B {
}
B[Xs(157)] = Ki, B.scale = Vr, B.len = qr, B[Xs(167)] = Jr, B[Xs(162)] = Ur, B.normalize = Gr, B.dot = Zi, B.projection = Kr;
const ct = Ex;
(function(n, e) {
  const t = Ex, x = n();
  for (; []; )
    try {
      if (parseInt(t(363)) / 1 * (parseInt(t(352)) / 2) + -parseInt(t(357)) / 3 * (-parseInt(t(355)) / 4) + -parseInt(t(342)) / 5 * (parseInt(t(343)) / 6) + parseInt(t(344)) / 7 + parseInt(t(364)) / 8 + parseInt(t(345)) / 9 + parseInt(t(356)) / 10 * (-parseInt(t(354)) / 11) === e)
        break;
      x.push(x.shift());
    } catch {
      x.push(x.shift());
    }
})(Tx, 915939);
const Ct = { DefaultFont: "10px sans-serif" }, je = { PointClosestEpsilon: 0.01, DefaultLightName: ct(360), DefaultDarkName: ct(365), flatten: !![] }, N0 = 2 * Math.PI, mi = ct(350), kt = { drag: "drag", edit: "edit", normal: "normal", select: "select", view: "view" };
function Ex(n, e) {
  const t = Tx();
  return Ex = function(x, s) {
    return x = x - 342, t[x];
  }, Ex(n, e);
}
const Zr = { auto: ct(351), move: "move", hand: ct(346), crosshair: "crosshair", s_resize: "s-resize", n_resize: "n-resize", w_resize: ct(361), e_resize: "e-resize" }, t0 = { horizontal: "horizontal", vertical: "vertical" }, P = { lt: "lt", ct: "ct", rt: "rt", lm: "lm", center: ct(353), rm: "rm", lb: "lb", cb: "cb", rb: "rb", nearest: "nearest", begin: ct(348), end: ct(358), ctrlPoint: ct(359), ctrlPoint1: "ctrlPoint1", ctrlPoint2: "ctrlPoint2", fold1: "fold1", fold2: ct(362), mid: "mid", mid1: "mid1", mid2: "mid2", up: "up", down: "down", left: "left", right: "right" }, Qr = { lt: P.rb, ct: P.cb, rt: P.lb, rm: P.lm, rb: P.lt, cb: P.ct, lb: P.rt, lm: P.rm }, cx = { HandlerLayerCanvas: 99, FullWindowDom: 1e3, Link: 1, Node: 2, EditorNewLink: 3, IntersectPoint: 999, NodeCtrlBox: 1e3, LinkCtrlBox: 1001 }, Qi = 0, Lx = 1;
function Tx() {
  const n = ["ctrlPoint", "DefaultLight", "w-resize", "fold2", "32783OFnglh", "4980992pRLXdJ", "DefaultDark", "fullWindow", "43775BTkRxj", "660AdGlgX", "11796890TkgKDy", "7579125EscDMx", "hand", "groupdrag", "begin", "resize", "2.5.3_试用版", "auto", "10imUyxD", "center", "55KaaLlT", "38680oFmIHj", "5828910ZbuOQU", "459fgNdfQ", "end"];
  return Tx = function() {
    return n;
  }, Tx();
}
const gt = { zoom: "zoom", resize: ct(349), zoomAfter: "zoomAfter", fullWindow: ct(366), modeChange: "modeChange", groupdrag: ct(347), groupdragend: "groupdragend", selectObject: "selectObject" };
function u(n) {
  return (e, t) => {
    e[t] = n;
  };
}
const wt = j0;
function j0(n, e) {
  const t = Mx();
  return j0 = function(x, s) {
    return x = x - 347, t[x];
  }, j0(n, e);
}
(function(n, e) {
  const t = j0, x = n();
  for (; []; )
    try {
      if (parseInt(t(362)) / 1 * (-parseInt(t(352)) / 2) + parseInt(t(369)) / 3 * (-parseInt(t(360)) / 4) + -parseInt(t(347)) / 5 * (-parseInt(t(358)) / 6) + parseInt(t(348)) / 7 * (-parseInt(t(361)) / 8) + parseInt(t(357)) / 9 + -parseInt(t(354)) / 10 + -parseInt(t(364)) / 11 * (-parseInt(t(350)) / 12) === e)
        break;
      x.push(x.shift());
    } catch {
      x.push(x.shift());
    }
})(Mx, 272419);
class T {
  constructor(e = 0, t = 0) {
    this.x = e, this.y = t;
  }
  toJSON() {
    return { x: this.x, y: this.y };
  }
  static isLikePoint(e) {
    const t = j0;
    return e instanceof T ? !![] : Object.keys(e)[t(356)] == 2 && e.x != null && e.y != null;
  }
  static looksSame(e, t, x) {
    if (e === t)
      return !![];
    let s = Math.abs(t.x - e.x), i = Math.abs(t.y - e.y);
    return x == null && (x = 0.01), s < x && i < x;
  }
  static middle(e, t) {
    return { x: (t.x + e.x) / 2, y: (t.y + e.y) / 2 };
  }
  static [wt(363)](e, t) {
    return Math.atan2(t.y - e.y, t.x - e.x);
  }
  static rotate(e, t, x, s, i) {
    return { x: (e - x) * Math.cos(i) - (t - s) * Math.sin(i) + x, y: (e - x) * Math.sin(i) + (t - s) * Math.cos(i) + s };
  }
  static rotatePoint(e, t, x) {
    const s = wt;
    return { x: (e.x - t.x) * Math[s(355)](x) - (e.y - t.y) * Math[s(359)](x) + t.x, y: (e.x - t.x) * Math.sin(x) + (e.y - t.y) * Math.cos(x) + t.y };
  }
  static distance(e, t, x, s) {
    let i = x - e, r = s - t;
    return Math.sqrt(i * i + r * r);
  }
  static distancePoint(e, t) {
    let x = t.x - e.x, s = t.y - e.y;
    return Math.sqrt(x * x + s * s);
  }
  static [wt(367)](e, t = je[wt(365)]) {
    const x = wt;
    let s = [e[0]];
    for (let i = 1; i < e.length - 1; i++) {
      let r = s[s[x(356)] - 1], o = e[i], a = e[i + 1];
      if (o.x === a.x && o.y === a.y)
        continue;
      let c = B.normalize([], [o.x - r.x, o.y - r.y]), l = B.normalize([], [a.x - o.x, a.y - o.y]);
      Math.abs(c[0] - l[0]) < t && Math.abs(c[1] - l[1]) < t || s[x(366)](o);
    }
    return s.push(e[e.length - 1]), s;
  }
  static forward(e, t, x) {
    const s = wt;
    let i = Math.atan2(t.y - e.y, t.x - e.x);
    return { x: e.x + x * Math[s(355)](i), y: e.y + x * Math.sin(i) };
  }
  static offsetWithAngle(e, t, x) {
    return typeof x == "number" && (x = { x: Math.cos(t) * x, y: Math.sin(t) * x }), { x: e.x + x.x, y: e.y + x.y };
  }
  static createPoints(e, t, x = 1, s = ![]) {
    const i = wt, r = s ? [e] : [], o = s ? x - 1 : x;
    let a = e;
    for (var c = 0; c < o; c++) {
      const l = { x: a.x + t[0], y: a.y + t[1] };
      r[i(366)](l), a = l;
    }
    return r;
  }
  static [wt(370)](e, t, x) {
    const s = wt;
    if (x == 0)
      return [];
    const i = [-t[0], -t[1]];
    if (x % 2 == 0) {
      const a = [t[0] / 2, t[1] / 2], c = { x: e.x - a[0], y: e.y - a[1] }, l = { x: e.x + a[0], y: e.y + a[1] }, h = T.createPoints(c, i, x / 2, !![]), d = T[s(349)](l, t, x / 2, !![]);
      return h.concat(d);
    }
    const r = T.createPoints(e, i, (x - 1) / 2 + 1, !![]), o = T[s(349)](e, t, (x - 1) / 2, ![]);
    return r[s(353)](o);
  }
  static interpolate(e, t, x) {
    let s = (1 - x) * e.x, i = (1 - x) * e.y, r = x * t.x, o = x * t.y;
    return { x: s + r, y: i + o };
  }
  static getDistanceSum(e) {
    const t = wt;
    let x = e.length;
    if (x < 2)
      throw new Error("points.length < 2");
    let s = e[0], i = e[x - 1];
    if (e.length == 2)
      return T[t(351)](s, i);
    let r = 0;
    for (var o = 1; o < x; o++)
      r += T[t(351)](e[o - 1], e[o]);
    return r;
  }
  static calculatePointOnMultiPointLine(e, t) {
    const x = wt;
    let s = e[x(356)];
    if (e[x(356)] < 2)
      throw new Error("points.length < 2");
    let i = e[0], r = e[e.length - 1];
    if (e[x(356)] == 2)
      return T.interpolate(i, r, t);
    if (t < 0)
      return T.interpolate(e[0], e[1], t);
    if (t > 1)
      return T[x(371)](e[e.length - 2], e[e.length - 1], t);
    let o = T.getDistanceSum(e), a = o * t, c = 0;
    for (var l = 1; l < s; l++) {
      let h = T[x(351)](e[l - 1], e[l]);
      if (a >= c && a <= c + h) {
        let d = a - c, p = d / h;
        return T.interpolate(e[l - 1], e[l], p);
      }
      c += h;
    }
    throw console[x(368)](e, t), new Error("assert error betweenPoints");
  }
}
function Mx() {
  const n = ["24HwGXOf", "distancePoint", "142tVYcgX", "concat", "4937450YgXfml", "cos", "length", "4117698XEogWw", "2599602VreQLI", "sin", "1189508CaLgkY", "616heYOOX", "7171qsqryR", "getAngle", "4486031QSfxog", "PointClosestEpsilon", "push", "mergeClosestPoints", "log", "3zXtvxQ", "createPointsBidirectional", "interpolate", "5KSptFa", "12159onJjRI", "createPoints"];
  return Mx = function() {
    return n;
  }, Mx();
}
const vt = z0;
function z0(n, e) {
  const t = Dx();
  return z0 = function(x, s) {
    return x = x - 458, t[x];
  }, z0(n, e);
}
(function(n, e) {
  const t = z0, x = n();
  for (; []; )
    try {
      if (-parseInt(t(476)) / 1 * (parseInt(t(458)) / 2) + -parseInt(t(461)) / 3 * (-parseInt(t(471)) / 4) + -parseInt(t(473)) / 5 + -parseInt(t(479)) / 6 + parseInt(t(480)) / 7 * (parseInt(t(466)) / 8) + -parseInt(t(465)) / 9 * (-parseInt(t(474)) / 10) + parseInt(t(477)) / 11 === e)
        break;
      x.push(x.shift());
    } catch {
      x.push(x.shift());
    }
})(Dx, 894061);
function Dx() {
  const n = ["53470meryjW", "skewX", "260516CqYxFm", "20346898urPpyR", "translate", "5221818qFPEmo", "6639535DAvtQc", "12gSeELl", "scale", "length", "650607DBThJN", "getTranslation", "vec", "width", "72kmRBrX", "8EYZhbL", "invert", "rotation", "getMatrix", "rotateTarget", "16WmEEKE", "scaleY", "1905075vFZJHO"];
  return Dx = function() {
    return n;
  }, Dx();
}
class lx {
  constructor(e) {
    const t = z0;
    this.width = 1, this.height = 1, this[t(468)] = 0, this.m = e && e.slice() || [1, 0, 0, 1, 0, 0];
  }
  get [vt(475)]() {
    return this.m[1];
  }
  get skewY() {
    return this.m[2];
  }
  get scaleX() {
    return this.m[0];
  }
  get [vt(472)]() {
    return this.m[3];
  }
  get x() {
    return this.m[4];
  }
  get y() {
    return this.m[5];
  }
  copy() {
    const e = vt;
    let t = new lx(this.m);
    return t[e(464)] = this.width, t.height = this.height, t[e(468)] = this.rotation, t;
  }
  identity() {
    this.m[0] = 1, this.m[1] = 0, this.m[2] = 0, this.m[3] = 1, this.m[4] = 0, this.m[5] = 0;
  }
  transform(e, t, x, s, i, r) {
    let o = [e, t, x, s, i, r], a = this.m[0] * o[0] + this.m[2] * o[1], c = this.m[1] * o[0] + this.m[3] * o[1], l = this.m[0] * o[2] + this.m[2] * o[3], h = this.m[1] * o[2] + this.m[3] * o[3], d = this.m[0] * o[4] + this.m[2] * o[5] + this.m[4], p = this.m[1] * o[4] + this.m[3] * o[5] + this.m[5];
    this.m[0] = a, this.m[1] = c, this.m[2] = l, this.m[3] = h, this.m[4] = d, this.m[5] = p;
  }
  point(e) {
    let t = this.m;
    return { x: t[0] * e.x + t[2] * e.y + t[4], y: t[3] * e.y + t[1] * e.x + t[5] };
  }
  [vt(463)](e, t) {
    let x = this.m;
    return e[0] = x[0] * t[0] + x[2] * t[1], e[1] = x[3] * t[1] + x[1] * t[0], e;
  }
  points(e) {
    const t = vt;
    let x = [];
    for (var s = 0; s < e[t(460)]; s++) {
      let i = e[s];
      x.push(this.point(i));
    }
    return x;
  }
  translate(e, t) {
    return this.m[4] += this.m[0] * e + this.m[2] * t, this.m[5] += this.m[1] * e + this.m[3] * t, this;
  }
  translateTo(e, t) {
    return this.m[4] = e, this.m[5] = t, this;
  }
  [vt(459)](e, t) {
    return this.m[0] *= e, this.m[1] *= e, this.m[2] *= t, this.m[3] *= t, this;
  }
  getScale() {
    return { x: this.m[0], y: this.m[3] };
  }
  rotate(e) {
    let t = Math.cos(e), x = Math.sin(e), s = this.m[0] * t + this.m[2] * x, i = this.m[1] * t + this.m[3] * x, r = this.m[0] * -x + this.m[2] * t, o = this.m[1] * -x + this.m[3] * t;
    return this.m[0] = s, this.m[1] = i, this.m[2] = r, this.m[3] = o, this;
  }
  [vt(470)](e, t, x) {
    const s = vt;
    this.translate(t, x), this.rotate(e), this[s(478)](-t, -x);
  }
  [vt(462)]() {
    return { x: this.m[4], y: this.m[5] };
  }
  multiply(e) {
    let t = this.m, x = e.m, s = t[0] * x[0] + t[2] * x[1], i = t[1] * x[0] + t[3] * x[1], r = t[0] * x[2] + t[2] * x[3], o = t[1] * x[2] + t[3] * x[3], a = t[0] * x[4] + t[2] * x[5] + t[4], c = t[1] * x[4] + t[3] * x[5] + t[5];
    return this.m[0] = s, this.m[1] = i, this.m[2] = r, this.m[3] = o, this.m[4] = a, this.m[5] = c, this;
  }
  [vt(467)]() {
    let e = 1 / (this.m[0] * this.m[3] - this.m[1] * this.m[2]), t = this.m[3] * e, x = -this.m[1] * e, s = -this.m[2] * e, i = this.m[0] * e, r = e * (this.m[2] * this.m[5] - this.m[3] * this.m[4]), o = e * (this.m[1] * this.m[4] - this.m[0] * this.m[5]);
    return this.m[0] = t, this.m[1] = x, this.m[2] = s, this.m[3] = i, this.m[4] = r, this.m[5] = o, this;
  }
  [vt(469)]() {
    return this.m;
  }
  setAbsolutePosition(e, t) {
    let x = this.m[0], s = this.m[1], i = this.m[2], r = this.m[3], o = this.m[4], a = this.m[5], c = (x * (t - a) - s * (e - o)) / (x * r - s * i), l = (e - o - i * c) / x;
    return this.translate(l, c);
  }
}
function Ax() {
  const n = ["390adgWMg", "height", "unionRects", "1807461LOJvSa", "63GdOoCV", "3206360YVBlmN", "398099ctUlGm", "bottom", "660HkbGRf", "containsRect", "setToEmpty", "center", "getBottom", "6845hDLkuv", " height:", "toString", "getRight", "3321BQryxn", "sign", "width", "297576BhAfIK", "3640220sblfoT", "toPoints"];
  return Ax = function() {
    return n;
  }, Ax();
}
const Q = e0;
(function(n, e) {
  const t = e0, x = n();
  for (; []; )
    try {
      if (parseInt(t(449)) / 1 + -parseInt(t(443)) / 2 * (parseInt(t(460)) / 3) + parseInt(t(451)) / 4 * (-parseInt(t(456)) / 5) + -parseInt(t(463)) / 6 * (-parseInt(t(447)) / 7) + parseInt(t(448)) / 8 + -parseInt(t(446)) / 9 + -parseInt(t(441)) / 10 === e)
        break;
      x.push(x.shift());
    } catch {
      x.push(x.shift());
    }
})(Ax, 238657);
function e0(n, e) {
  const t = Ax();
  return e0 = function(x, s) {
    return x = x - 441, t[x];
  }, e0(n, e);
}
class j {
  constructor(e = 0, t = 0, x = 0, s = 0) {
    const i = e0;
    this.x = 0, this.y = 0, this[i(462)] = 0, this.height = 0, this.x = e, this.y = t, this[i(462)] = x, this.height = s;
  }
  setTo(e = 0, t = 0, x = 0, s = 0) {
    this.x = e, this.y = t, this.width = x, this.height = s;
  }
  getRect() {
    return this;
  }
  clone() {
    const e = e0;
    return new j(this.x, this.y, this[e(462)], this.height);
  }
  [Q(458)]() {
    const e = Q;
    return "[x: " + this.x + " y:" + this.y + " width:" + this.width + e(457) + this[e(444)] + "]";
  }
  equals(e) {
    return e.x == this.x && e.y == this.y && e.width == this.width && e.height == this.height;
  }
  [Q(452)](e) {
    const t = Q;
    return e.x > this.x && e.getRight() < this[t(459)]() && e.y > this.y && e.getBottom() < this[t(455)]() ? !![] : ![];
  }
  contains(e, t) {
    const x = Q;
    return e >= this.x && e <= this.x + this[x(462)] && t >= this.y && t <= this.y + this.height;
  }
  isIntersectRect(e) {
    return e.x > this.getRight() || e.y > this.getBottom() ? ![] : e.getRight() < this.x || e.getBottom() < this.y ? ![] : !![];
  }
  [Q(459)]() {
    return this.x + this.width;
  }
  getBottom() {
    const e = Q;
    return this.y + this[e(444)];
  }
  isEmpty() {
    return this.x === 0 && this.y === 0 && this.width === 0 && this.height === 0;
  }
  [Q(453)]() {
    this.setTo(0, 0, 0, 0);
  }
  getCenter() {
    return { x: this.x + this.width / 2, y: this.y + this.height / 2 };
  }
  [Q(442)]() {
    const e = Q;
    return [{ x: this.x, y: this.y }, { x: this.right, y: this.y }, { x: this.right, y: this.bottom }, { x: this.x, y: this[e(450)] }];
  }
  static union(e, t) {
    let x = Math.min(e.x, t.x), s = Math.min(e.y, t.y), i = Math.max(e.getRight(), t.getRight()), r = Math.max(e.getBottom(), t.getBottom());
    return e.setTo(x, s, i - x, r - s), e;
  }
  static [Q(445)](e) {
    let t = e[0].clone();
    for (let x = 1; x < e.length; x++)
      t = j.union(t, e[x]);
    return t;
  }
  static normal(e, t) {
    const x = Q;
    let s = t.x - e.x, i = t.y - e.y;
    return Math.abs(s) > Math.abs(i) ? [Math.sign(s), 0] : [0, Math[x(461)](i)];
  }
  get left() {
    return this.x;
  }
  set left(e) {
    this.x = e;
  }
  get right() {
    const e = Q;
    return this.x + this[e(462)];
  }
  set right(e) {
    this.x = e - this.width;
  }
  get top() {
    return this.y;
  }
  set top(e) {
    const t = Q;
    this.y = e + this[t(444)];
  }
  get [Q(450)]() {
    return this.y + this.height;
  }
  set bottom(e) {
    this.y = e - this.height;
  }
  get center() {
    return this.x + this.width * 0.5;
  }
  set [Q(454)](e) {
    this.x = e - this.width * 0.5;
  }
  get middle() {
    return this.y + this.height * 0.5;
  }
  set middle(e) {
    this.y = e - this.height * 0.5;
  }
}
class qt {
  constructor() {
  }
  contains(e, t) {
    return this.aabb.contains(e, t) == ![] ? ![] : !![];
  }
  static toAABB(e, t) {
    let x = e[0], s = { x: x.x, y: x.y }, i = { x: x.x, y: x.y }, r = { x: x.x, y: x.y }, o = { x: x.x, y: x.y };
    for (let a = 1; a < e.length; a++) {
      let c = e[a];
      c.x < s.x && (s.x = c.x), c.x > i.x && (i.x = c.x), c.y < r.y && (r.y = c.y), c.y > o.y && (o.y = c.y);
    }
    return t == null || t <= 1 ? new j(s.x, r.y, i.x - s.x, o.y - r.y) : new j(s.x - t, r.y - t, i.x - s.x + t + t, o.y - r.y + t + t);
  }
}
(function(n, e) {
  for (var t = ei, x = n(); []; )
    try {
      var s = -parseInt(t(114)) / 1 * (-parseInt(t(112)) / 2) + parseInt(t(110)) / 3 + -parseInt(t(109)) / 4 + -parseInt(t(108)) / 5 * (parseInt(t(106)) / 6) + -parseInt(t(107)) / 7 + parseInt(t(111)) / 8 + parseInt(t(113)) / 9;
      if (s === e)
        break;
      x.push(x.shift());
    } catch {
      x.push(x.shift());
    }
})(Bx, 587170);
function ei(n, e) {
  var t = Bx();
  return ei = function(x, s) {
    x = x - 106;
    var i = t[x];
    return i;
  }, ei(n, e);
}
function Bx() {
  var n = ["6dZGCUb", "4603529ZLjopU", "1315415wcoQKo", "3754364aOSalQ", "751659zXCXZL", "5356936msdzSb", "965722aNysWc", "9391140wNLmVM", "1YpCtLU"];
  return Bx = function() {
    return n;
  }, Bx();
}
function xi(n, e) {
  var t = Nx();
  return xi = function(x, s) {
    x = x - 405;
    var i = t[x];
    return i;
  }, xi(n, e);
}
(function(n, e) {
  for (var t = xi, x = n(); []; )
    try {
      var s = parseInt(t(412)) / 1 * (parseInt(t(414)) / 2) + -parseInt(t(411)) / 3 + -parseInt(t(406)) / 4 + parseInt(t(405)) / 5 * (parseInt(t(413)) / 6) + parseInt(t(409)) / 7 * (-parseInt(t(410)) / 8) + -parseInt(t(408)) / 9 + parseInt(t(407)) / 10;
      if (s === e)
        break;
      x.push(x.shift());
    } catch {
      x.push(x.shift());
    }
})(Nx, 125488);
function Nx() {
  var n = ["7623750nnYtkY", "2235168EswjWK", "1701287KhNXvA", "8UKEwVn", "273177oMlAxk", "1333DLVxGL", "15354shvEQN", "146yLAOFq", "115cNqdUb", "842404huEteb"];
  return Nx = function() {
    return n;
  }, Nx();
}
const ze = zx;
function jx() {
  const n = ["24075333zONvpo", "type", "54596RlWCjJ", "hasListener", "1317498cOkczg", "listeners", "4809608Aqqfzv", "85wvccZo", "3wXLoFa", "addEventListener", "6428464HWmYHR", "309006DJlBbd", "965811qwVgfw", "call", "dispatchEvent"];
  return jx = function() {
    return n;
  }, jx();
}
(function(n, e) {
  const t = zx, x = n();
  for (; []; )
    try {
      if (parseInt(t(448)) / 1 + -parseInt(t(455)) / 2 + parseInt(t(459)) / 3 * (parseInt(t(453)) / 4) + parseInt(t(458)) / 5 * (-parseInt(t(447)) / 6) + -parseInt(t(446)) / 7 + -parseInt(t(457)) / 8 + parseInt(t(451)) / 9 === e)
        break;
      x.push(x.shift());
    } catch {
      x.push(x.shift());
    }
})(jx, 600678);
function zx(n, e) {
  const t = jx();
  return zx = function(x, s) {
    return x = x - 446, t[x];
  }, zx(n, e);
}
class Et {
  constructor() {
    this.listeners = {};
  }
  [ze(454)](e) {
    return e in this.listeners;
  }
  [ze(460)](e, t) {
    !(e in this[ze(456)]) && (this.listeners[e] = []), this.listeners[e].push(t);
  }
  removeEventListener(e, t) {
    if (!(e in this.listeners))
      return;
    let x = this.listeners[e];
    for (var s = 0, i = x.length; s < i; s++)
      if (x[s] === t)
        return x.splice(s, 1), this.removeEventListener(e, t);
  }
  [ze(450)](e) {
    const t = ze;
    if (!(e.type in this.listeners))
      return;
    let x = this.listeners[e[t(452)]];
    for (var s = 0, i = x.length; s < i; s++)
      x[s][t(449)](this, e);
  }
  on(e, t) {
    return this[ze(460)](e, t);
  }
}
function Rx(n, e) {
  const t = Wx();
  return Rx = function(x, s) {
    return x = x - 246, t[x];
  }, Rx(n, e);
}
const Lt = Rx;
(function(n, e) {
  const t = Rx, x = n();
  for (; []; )
    try {
      if (parseInt(t(265)) / 1 + parseInt(t(264)) / 2 * (parseInt(t(254)) / 3) + parseInt(t(258)) / 4 * (-parseInt(t(269)) / 5) + parseInt(t(247)) / 6 + parseInt(t(256)) / 7 * (-parseInt(t(246)) / 8) + parseInt(t(260)) / 9 + -parseInt(t(250)) / 10 === e)
        break;
      x.push(x.shift());
    } catch {
      x.push(x.shift());
    }
})(Wx, 278540);
function Wx() {
  const n = ["length", "245811tNkQgd", "min", "3076087LUVNdh", "getPointsNormalization", "59848ugWyUW", "removeAt", "2816100VorBGh", "rotateNormaledPoints", "getPointsRect", "MIN_SAFE_INTEGER", "6OUuGij", "231602jvmYIH", "addAll", "width", "setTo", "145TjgBsz", "8mrdxfh", "2663634OkIQvA", "MAX_SAFE_INTEGER", "getMinMax", "823730DRuTle", "map", "height"];
  return Wx = function() {
    return n;
  }, Wx();
}
class z {
  static hasChild(e, t) {
    return e.indexOf(t) != -1;
  }
  static notContains(e, t) {
    return e.indexOf(t) == -1;
  }
  static [Lt(266)](e, t) {
    for (var x = 0; x < t.length; x++)
      e.push(t[x]);
    return e;
  }
  static [Lt(259)](e, t) {
    return e.splice(t, 1);
  }
  static remove(e, t) {
    let x = e.indexOf(t);
    return x == -1 ? -1 : (e.splice(x, 1), x);
  }
  static [Lt(262)](e) {
    const t = Lt;
    let x = Number[t(248)], s = Number.MAX_SAFE_INTEGER, i = Number.MIN_SAFE_INTEGER, r = Number[t(263)];
    return e.forEach(function(o) {
      o.x < x && (x = o.x), o.y < s && (s = o.y), o.x > i && (i = o.x), o.y > r && (r = o.y);
    }), new j(x, s, i - x, r - s);
  }
  static getRectsNormalization(e, t) {
    const x = Lt;
    let s = new j();
    s[x(268)](e[0].x, e[0].y, e[0].width, e[0].height);
    for (let l = 1; l < e.length; l++)
      j.union(s, e[l]);
    let i = s.width, r = s.height, o = s.x, a = s.y;
    return e.map((l) => {
      const h = x;
      let d = l[h(267)] / i, p = l[h(252)] / r, b = (l.x - o) / i, _ = (l.y - a) / r, I = d * t[h(267)], g = p * t.height, k = t.x + b * t.width, S = t.y + _ * t[h(252)];
      return new j(k, S, I, g);
    });
  }
  static [Lt(249)](e) {
    const t = Lt;
    let x = { x: e[0].x, y: e[0].y }, s = { x: e[0].x, y: e[0].y };
    for (let i = 1; i < e[t(253)]; i++) {
      let r = e[i];
      x.x = Math.min(x.x, r.x), x.y = Math.min(x.y, r.y), s.x = Math.max(s.x, r.x), s.y = Math.max(s.y, r.y);
    }
    return { min: x, max: s };
  }
  static [Lt(257)](e, t = -0.5, x = -0.5, s = !![]) {
    const i = Lt;
    let r = z[i(249)](e), o = r[i(255)], a = r.max, c = a.x - o.x, l = a.y - o.y;
    if (c == l || s == ![])
      return e[i(251)]((b) => ({ x: (b.x - o.x) / c + t, y: (b.y - o.y) / l + x }));
    if (c > l) {
      let p = (c - l) * 0.5;
      return l = c, e[i(251)]((_) => ({ x: (_.x - o.x) / c + t, y: (_.y + p - o.y) / l + x }));
    }
    let h = (l - c) * 0.5;
    return c = l, e.map((p) => ({ x: (p.x + h - o.x) / c + t, y: (p.y - o.y) / l + x }));
  }
  static [Lt(261)](e, t, x = 0, s = 0) {
    if (t == 0 || t % 6.283185307179586 == 0)
      return e.slice();
    let i = e.map((r) => T.rotate(r.x, r.y, x, s, t));
    return z.getPointsNormalization(i);
  }
}
const bt = we;
(function(n, e) {
  const t = we, x = n();
  for (; []; )
    try {
      if (parseInt(t(461)) / 1 * (-parseInt(t(460)) / 2) + -parseInt(t(462)) / 3 * (-parseInt(t(481)) / 4) + parseInt(t(479)) / 5 * (parseInt(t(454)) / 6) + parseInt(t(467)) / 7 + parseInt(t(456)) / 8 + -parseInt(t(448)) / 9 + -parseInt(t(463)) / 10 * (parseInt(t(480)) / 11) === e)
        break;
      x.push(x.shift());
    } catch {
      x.push(x.shift());
    }
})(Hx, 439200);
function Hx() {
  const n = ["imageCache", "图片加载失败: ", "set", "delete", "Image load error: ", "1480134zlFIlf", "clearCache", "6834720THFtjM", "canceled", "callbackCache", "clear", "100526PRNAvc", "1EIxcsR", "1085196CygMzO", "10mhIUkd", "complete", "allLoadedResolve", "dispatchEvent", "3247755oCNYnC", "addEventListener", "all", "errorLog", "image load error: ", "get", "onload", "onerror", "removeObject", "addToCallbackList", "whenAllLoaded", "objCache", "10EQUWBE", "14248223LFLaaX", "8HPNFBU", "6753519Mtlmvs"];
  return Hx = function() {
    return n;
  }, Hx();
}
class $r extends Et {
  constructor() {
    const e = we;
    super(), this.showImgLoadErrorLog = !![], this.imageCache = /* @__PURE__ */ new Map(), this[e(458)] = /* @__PURE__ */ new Map(), this.objCache = /* @__PURE__ */ new Map();
  }
  [bt(470)](e) {
    this.showImgLoadErrorLog && console.error(e);
  }
  [bt(477)]() {
    let e = this;
    return new Promise((t, x) => {
      e.allLoadedResolve = t;
    });
  }
  whenAllImagesLoaded(e, t = ![]) {
    const x = bt, s = this.imageCache, i = this;
    function r(a) {
      return new Promise((c, l) => {
        let h = new Image();
        h.src = a, t && console.log("开始加载: ", a), h.onload = function() {
          const d = we;
          t && console.log("加载完成: ", a), h[d(464)] && h.naturalWidth > 0 ? (s.set(a, h), c(h)) : i[d(470)](d(450) + a);
        }, h.onerror = function() {
          const d = we;
          i[d(470)](d(471) + a), c(null);
        };
      });
    }
    let o = e.map(r);
    return Promise[x(469)](o);
  }
  [bt(455)]() {
    const e = bt;
    this.imageCache.clear(), this[e(458)].clear(), this.objCache[e(459)]();
  }
  [bt(475)](e) {
    const t = bt;
    this.objCache[t(452)](e);
  }
  cancelCallback(e) {
    let t = this.objCache.get(e);
    t != null && (t.canceled = !![], this.objCache.delete(e));
  }
  onload(e, t) {
    const x = bt, s = this, i = this.callbackCache[x(472)](e);
    if (i == null)
      return;
    for (let o = 0; o < i.length; o++) {
      let a = i[o];
      a.canceled != !![] && (a(t), a.cacheObj && this[x(478)].delete(a.cacheObj), a.next && a.next(t));
    }
    this.callbackCache[x(452)](e), t != null && this[x(449)].set(e, t), this.hasLoaded = !![], this[x(466)]({ type: "loaded", resource: t }), this[x(458)].size == 0 && this[x(465)] && (s.allLoadedResolve(t), s[x(465)] = null);
  }
  [bt(476)](e, t) {
    const x = bt;
    if (t == null)
      return null;
    let s = this.callbackCache.get(e);
    s == null && (s = [], this.callbackCache[x(451)](e, s)), s.push(t);
  }
  loadImageWithObj(e, t, x) {
    const s = bt;
    let i = this.objCache[s(472)](e);
    return i != null && (i[s(457)] = !![]), x.cacheObj = e, x.canceled = null, this.objCache.set(e, x), this.loadImage(t, x);
  }
  loadImage(e, t) {
    const x = bt;
    let s = this, i = this.callbackCache[x(472)](e), r = i != null;
    if (s.lastResource = e, this.addToCallbackList(e, t), r)
      return;
    let o = this.imageCache.get(e);
    if (o != null) {
      this.onload(e, o);
      return;
    }
    setTimeout(function() {
      const a = x;
      let c = new Image();
      c.src = e, c[a(468)]("load", (l) => {
        s[a(473)](e, c);
      }), c[a(474)] = function() {
        const l = a;
        console.error(l(453) + e), s[l(473)](e, null);
      };
    }, 1);
  }
}
const rt = new $r();
function we(n, e) {
  const t = Hx();
  return we = function(x, s) {
    return x = x - 448, t[x];
  }, we(n, e);
}
(function(n, e) {
  const t = R0, x = n();
  for (; []; )
    try {
      if (-parseInt(t(171)) / 1 + parseInt(t(169)) / 2 * (parseInt(t(164)) / 3) + -parseInt(t(175)) / 4 * (-parseInt(t(174)) / 5) + parseInt(t(163)) / 6 * (parseInt(t(161)) / 7) + -parseInt(t(168)) / 8 + -parseInt(t(170)) / 9 * (-parseInt(t(160)) / 10) + -parseInt(t(173)) / 11 * (parseInt(t(165)) / 12) === e)
        break;
      x.push(x.shift());
    } catch {
      x.push(x.shift());
    }
})(Fx, 957565);
function R0(n, e) {
  const t = Fx();
  return R0 = function(x, s) {
    return x = x - 160, t[x];
  }, R0(n, e);
}
function to(n, e, t) {
  return typeof n == "function" ? Ei(n.name, n, e) : Ei(n, e, t);
}
function Ei(n, e, t) {
  const x = R0;
  if (Ct[n] != null)
    throw new Error(x(166) + n);
  const s = e.prototype;
  t != null && t.length > 0 && (s[x(167)] = s.serializers.concat(t)), Object[x(172)](s, { className: { writable: !![] } }), s.className = n, Object.defineProperties(s, { className: { writable: ![] } }), Ct[n] = e;
}
function Ii(n) {
  const e = R0;
  let t = Ct[n];
  if (t == null)
    throw (n == "ArrowNode" || n == "ShapeNode") && (t = Ct[e(162)]), new Error("class not exist name:" + n);
  return t;
}
function hx(n, e) {
  let t, x = Ii(n);
  return t = new x(), e && Object.assign(t, e), t;
}
function Fx() {
  const n = ["13064172vLUCbR", "class already reg, name:", "serializers", "10907816wPFgCQ", "38IjOwGF", "15804oIxXpm", "595527PNwTBV", "defineProperties", "11RnHezl", "565IjNhYB", "59404dakTfA", "5690aHCutc", "49vaPlpf", "Node", "884244lSEbUT", "46785XjsetF"];
  return Fx = function() {
    return n;
  }, Fx();
}
const O = W0;
(function(n, e) {
  const t = W0, x = n();
  for (; []; )
    try {
      if (parseInt(t(370)) / 1 * (parseInt(t(344)) / 2) + parseInt(t(348)) / 3 * (parseInt(t(387)) / 4) + parseInt(t(367)) / 5 * (parseInt(t(355)) / 6) + parseInt(t(371)) / 7 * (-parseInt(t(362)) / 8) + parseInt(t(384)) / 9 * (parseInt(t(358)) / 10) + parseInt(t(354)) / 11 * (-parseInt(t(347)) / 12) + -parseInt(t(352)) / 13 === e)
        break;
      x.push(x.shift());
    } catch {
      x.push(x.shift());
    }
})(Yx, 183937);
function W0(n, e) {
  const t = Yx();
  return W0 = function(x, s) {
    return x = x - 338, t[x];
  }, W0(n, e);
}
var eo = Object.defineProperty, xo = Object.getOwnPropertyDescriptor, W = (n, e, t, x) => {
  for (var s = x > 1 ? void 0 : x ? xo(e, t) : e, i = n.length - 1, r; i >= 0; i--)
    (r = n[i]) && (s = (x ? r(e, t, s) : r(s)) || s);
  return x && s && eo(e, t, s), s;
};
const ot = class {
  constructor(n) {
    this.isClosed = !![], this.points = n;
  }
  updatePoints(n) {
    this.points = n, this.dirty = !![];
  }
  toJSON() {
    let e = { className: this[W0(373)] };
    return e.points = this.points, e.isClosed = this.isClosed, e;
  }
  [O(357)]() {
    const n = O;
    return new ot(this.points[n(360)]());
  }
  static [O(345)](n) {
    const e = O;
    let t = Ii(n.className), x = new t(n[e(356)]);
    return x.isClosed = n.isClosed, x;
  }
  static [O(363)](n, e = !![]) {
    let t = z.getPointsNormalization(n, -0.5, -0.5, e);
    return new ot(t);
  }
  static normalPoints(n, e = !![]) {
    return z.getPointsNormalization(n, -0.5, -0.5, e);
  }
  draw(n, e, t) {
    const x = O;
    t = t || this[x(356)];
    let s = t[0];
    n.moveTo(s.x, s.y);
    for (let r = 1; r < t[x(349)] - 1; r++) {
      if (t[r].x === s.x && t[r].y === s.y) {
        s = t[r];
        continue;
      }
      n.lineTo(t[r].x, t[r].y), s = t[r];
    }
    let i = t[t.length - 1];
    n[x(346)](i.x, i.y), this[x(378)] && n.closePath();
  }
  [O(379)](n) {
    const e = O;
    return this.points = z.rotateNormaledPoints(this.points, n), this[e(377)] = !![], this;
  }
  scale(n, e) {
    const t = O;
    return this[t(356)].forEach((x) => {
      x.x *= n, x.y *= e;
    }), this.points = z[t(366)](this.points), this.dirty = !![], this;
  }
  static [O(381)](n, e) {
    return function(x) {
      return x.x *= n, x.y *= e, x;
    };
  }
  skew(n, e) {
    const t = O;
    return this.points.forEach((x) => {
      let s = x.x, i = x.y;
      x.x = s + i * e, x.y = i + s * n;
    }), this[t(356)] = z.getPointsNormalization(this.points), this.dirty = !![], this;
  }
  static pointToSize(n, e, t, x = ![]) {
    return x == !![] && e != t && (e > t ? e = t : t = e), n.map((i) => ({ x: i.x * e, y: i.y * t }));
  }
  static polygon(n = 3, e = 0) {
    const t = O;
    let x = [], s = 2 * Math.PI / n;
    for (var i = 0; i < n; i++) {
      let o = Math.cos(e + i * s), a = Math[t(383)](e + i * s);
      x.push({ x: o, y: a });
    }
    return ot.fromPoints(x);
  }
  static [O(376)](n = 0.2) {
    let e = [{ x: n, y: 0 }, { x: 1, y: 0 }, { x: 1 - n, y: 1 }, { x: 0, y: 1 }];
    return ot.fromPoints(e);
  }
  static cos(n) {
    const e = O;
    n.begin = n.begin | 0, n.end = n.end | N0;
    let t = [];
    if (n[e(364)] == null) {
      n[e(361)] = n.step | 0.2;
      for (let x = n.begin; x <= n.end; x += n[e(361)]) {
        let s = x;
        t.push({ x: s, y: Math.cos(s) });
      }
    } else {
      n[e(361)] = (n[e(375)] - n[e(382)]) / n.pointCount;
      for (let x = 0; x < n[e(364)]; x++) {
        let s = (x + 1) * n[e(361)];
        t.push({ x: s, y: Math[e(368)](s) });
      }
    }
    return ot.fromPoints(t);
  }
  static circle(n) {
    const e = O;
    let t = ot.circlePoints(n);
    return ot[e(363)](t);
  }
  static circlePoints(n) {
    const e = O;
    n.begin = n.begin || 0, n[e(375)] = n.end || N0;
    let t = [];
    if (n[e(364)] == null) {
      n.step = n[e(361)] | 0.2;
      for (let x = n[e(382)]; x <= n[e(375)]; x += n[e(361)]) {
        let s = x;
        t.push({ x: Math.sin(s), y: Math.cos(s) });
      }
    } else {
      let x = (n[e(375)] - n.begin) / n.pointCount;
      for (let s = 0; s < n.pointCount; s++) {
        let i = s * x;
        t.push({ x: Math.sin(i), y: Math.cos(i) });
      }
    }
    return t;
  }
  static fn(n) {
    let e = n();
    return ot.fromPoints(e);
  }
  static outerGrid(n, e) {
    const t = O;
    let x = [], s = 1 / (e - 1), i = 1 / (n - 1);
    for (let r = 0; r < n; r++)
      for (let o = 0; o < e; o++) {
        let a = { y: r * i - 0.5, x: o * s - 0.5 };
        x[t(338)](a);
      }
    return new ot(x);
  }
  static innerGrid(n, e) {
    let t = [], x = 1 / (e + 1), s = 1 / (n + 1), i = x, r = s;
    for (let o = 0; o < n; o++)
      for (let a = 0; a < e; a++) {
        let c = { x: i + a * x - 0.5, y: r + o * s - 0.5 };
        t.push(c);
      }
    return new ot(t);
  }
};
let M = ot;
M[O(351)] = (() => {
  let n = [{ x: -0.5, y: 0 }, { x: 0, y: -0.5 }, { x: 0.5, y: 0 }, { x: 0, y: 0.5 }];
  return new ot(n);
})(), M.Triangle = (() => {
  let n = [{ x: -0.5, y: -0.5 }, { x: 0.5, y: 0 }, { x: -0.5, y: 0.5 }];
  return new ot(n);
})(), M.tip = (() => {
  let n = [{ x: 0, y: 0 }, { x: 1, y: 0 }, { x: 1, y: 0.8 }, { x: 0.8, y: 0.8 }, { x: 0.5, y: 1 }, { x: 0.2, y: 0.8 }, { x: 0, y: 0.8 }, { x: 0, y: 0 }];
  return ot.fromPoints(n);
})(), W([u("Shape")], M.prototype, "className", 2), W([u(["ct", "cb", "lm", "rm"])], M[O(339)], "anchorPoints", 2), W([u([O(379), "lt", "lb", "rt", "rb"])], M[O(339)], "ctrlPoints", 2), W([u(!![])], M[O(339)], O(378), 2), W([u(!![])], M.prototype, "isUnit", 2), W([u(![])], M.prototype, O(377), 2), M[O(372)] = M.polygon;
class k0 extends M {
  constructor(e = [{ x: -0.5, y: -0.5 }, { x: 0.4, y: 0 }, { x: -0.5, y: 0.5 }, { x: -0.5, y: 0 }]) {
    super(e);
  }
  [O(359)](e, t, x) {
    const s = O;
    x = x || this.points, e.moveTo(x[0].x, x[0].y), e.lineTo(x[1].x, x[1].y), e.lineTo(x[2].x, x[2].y), e.lineCap = "square";
    let i = t[s(380)].lineWidth || 1, r = i * 0.5 / t.width;
    r > 1 && (r = 1), e.moveTo(x[3].x - r, x[3].y), e.lineTo(x[1].x - r, x[1].y);
  }
}
W([u("ArrowShape")], k0.prototype, "className", 2), W([u(![])], k0.prototype, O(378), 2), Ct.ArrowShape = k0, M[O(342)] = new k0(), M.ArrowShape = M.Arrow;
class vx extends M {
  constructor(e = [{ x: -0.5, y: -0.5 }, { x: 0.5, y: -0.5 }, { x: 0.5, y: 0.5 }, { x: -0.5, y: 0.5 }]) {
    super(e);
  }
  draw(e, t) {
    e.rect(-0.5, -0.5, 1, 1);
  }
}
W([u("RectShape")], vx.prototype, "className", 2), Ct.RectShape = vx, M.Rect = new vx(), M.RectShape = M.Rect;
class ni extends M {
  constructor(e = [{ x: 0, y: 0 }]) {
    super(e);
  }
  draw(e, t) {
    let x = this.points[0];
    e.arc(x.x, x.y, 0.5, 0, N0);
  }
}
W([u("CircleShape")], ni.prototype, "className", 2), M.Circle = new ni();
class si extends M {
  constructor(e = [{ x: 0, y: 0 }, { x: -0.5, y: 0 }, { x: -0.5, y: 0 }]) {
    super(e);
  }
  draw(e, t) {
    const x = O;
    let s = this.points[0], i = this.points[1], r = this[x(356)][2], o = T.distancePoint(s, i), a = T.distancePoint(s, r);
    e.ellipse(s.x, s.y, o, a, 0, 0, N0);
  }
}
W([u(O(386))], si[O(339)], O(373), 2), M.Ellipse = new si();
function Yx() {
  const n = ["draw", "slice", "step", "979432BigrYx", "fromPoints", "pointCount", "ctrlPoints", "getPointsNormalization", "5UGXyoW", "cos", "center", "198267HjBhlB", "7DlzbFv", "Polygon", "className", "outerGrid", "end", "parallelogram", "dirty", "isClosed", "rotate", "_computedStyle", "Scale", "begin", "sin", "1084059pkLPhB", "atan2", "EllipseShape", "1372484hKxlUW", "push", "prototype", "anchorPoints", "Curve", "Arrow", "closePath", "2StnNwQ", "fromJSON", "lineTo", "48LFRrxk", "3DKOEbT", "length", "moveTo", "Damond", "2915887uEvXws", "ctrlPoint2", "373241KSIGfS", "27300ZFtlnI", "points", "clone", "10TVElvj"];
  return Yx = function() {
    return n;
  }, Yx();
}
class S0 extends M {
  constructor(e = []) {
    super(e), this.isClosed = ![];
  }
}
W([u("LineShape")], S0.prototype, O(373), 2), W([u([O(382), "end"])], S0[O(339)], "anchorPoints", 2), W([u(["begin", "end"])], S0[O(339)], "ctrlPoints", 2), M.Line = new S0();
class P0 extends M {
  constructor(e = []) {
    super(e), this.isClosed = ![];
  }
  draw(e, t, x) {
    const s = O;
    let i = x[0], r = x[1], o = x[2];
    e[s(350)](i.x, i.y), e.quadraticCurveTo(r.x, r.y, o.x, o.y), this[s(378)] && e.closePath();
  }
}
W([u("CurveShape")], P0.prototype, "className", 2), W([u(["begin", O(375)])], P0.prototype, "anchorPoints", 2), W([u(["begin", "end"])], P0.prototype, O(365), 2), M[O(341)] = new P0();
class O0 extends M {
  constructor(e = []) {
    const t = O;
    super(e), this[t(378)] = ![];
  }
  draw(e, t, x) {
    const s = O;
    let i = x[0], r = x[1], o = x[3], a = x[4];
    e.beginPath(), e[s(350)](i.x, i.y), e.bezierCurveTo(r.x, r.y, o.x, o.y, a.x, a.y), this.isClosed && e[s(343)]();
  }
}
W([u("BezierCurveShape")], O0.prototype, O(373), 2), W([u(["begin", "end"])], O0.prototype, O(340), 2), W([u([O(382), O(375), "ctrlPoint1", O(353)])], O0.prototype, "ctrlPoints", 2), M.BezierCurve = new O0();
class C0 extends M {
  constructor(e = []) {
    super(e), this.isClosed = ![];
  }
  draw(e, t, x) {
    const s = O;
    let i = x[0], r = x[x.length - 1];
    if (t && t.direction == "anticlockwise") {
      let o = Math.atan2(i.y - r.y, i.x - r.x);
      e.arc(0, 0, 0.5, o, o + Math.PI, !![]);
    } else {
      let o = Math[s(385)](i.y - r.y, i.x - r.x);
      e.arc(0, 0, 0.5, o, o + Math.PI, ![]);
    }
    this.isClosed && e.closePath();
  }
}
W([u("ArcShape")], C0[O(339)], "className", 2), W([u([O(382), O(375)])], C0.prototype, "anchorPoints", 2), W([u(["begin", "end"])], C0.prototype, O(365), 2), M.Arc = new C0();
const no = M[O(374)](3, 3).points, so = [P.lt, P.ct, P.rt, P.lm, P[O(369)], P.rm, P.lb, P.cb, P.rb], ae = {};
so.forEach((n, e) => {
  ae[n] = no[e];
}), ae[P.nearest] = function() {
  return this.nearest;
};
function $i(n) {
  if (n == "center")
    throw new Error("center is zero vector");
  let e = ae[n];
  return B.normalize([], [e.x, e.y]);
}
function tr(n) {
  let e = ae[n];
  return Math.atan2(e.y, e.x);
}
class Je extends M {
  constructor(e = []) {
    super(e), this.isClosed = !![];
  }
  [O(359)](e, t) {
    const x = O;
    let s = t, i = -s.width * 0.5, r = -s.height * 0.5, o = s.width, a = s.arrowsSize, c = s.height - a, l = 0;
    e[x(350)](i, r), e[x(346)](i + o, r), e.lineTo(i + o, r + c), e.lineTo(l + (a - 2), r + c), e.lineTo(l, r + c + a), e.lineTo(l - (a - 2), r + c), e[x(346)](i, r + c), e.lineTo(i, r);
  }
}
W([u("TipShape")], Je.prototype, O(373), 2), W([u(![])], Je.prototype, "isUnit", 2), W([u([])], Je[O(339)], "anchorPoints", 2), W([u([])], Je[O(339)], "ctrlPoints", 2);
function Xx() {
  const n = ["path", "data", "2zgndKn", "175318rNMqrf", "begin", "parent", "fromJSON", "userData", "_afterFromJSON", "filter", "styles", "3059590hdXTdM", "1380150kJrsyf", "8960KILDRl", "40JDcbpQ", "17769lpkVQR", "isLink", "className", "DisplayObjects", "_updateBeginEndAfterJson", "1673649oneKnV", "311172XxBgTd", "addChild", "keys", "length", "forEach", "44VcIDgX"];
  return Xx = function() {
    return n;
  }, Xx();
}
(function(n, e) {
  const t = Ux, x = n();
  for (; []; )
    try {
      if (-parseInt(t(134)) / 1 * (parseInt(t(135)) / 2) + parseInt(t(147)) / 3 * (parseInt(t(131)) / 4) + -parseInt(t(144)) / 5 + parseInt(t(153)) / 6 + -parseInt(t(145)) / 7 * (parseInt(t(146)) / 8) + parseInt(t(152)) / 9 + parseInt(t(143)) / 10 === e)
        break;
      x.push(x.shift());
    } catch {
      x.push(x.shift());
    }
})(Xx, 151187);
function Ux(n, e) {
  const t = Xx();
  return Ux = function(x, s) {
    return x = x - 131, t[x];
  }, Ux(n, e);
}
function Us(n, e) {
  const t = Ux;
  let x = {}, s = {}, i = {}, r = n.Roots || [0], o = n[t(150)] || [], a = n.Styles || [], c = n.Shapes || [], l = n.Resources || [], h = n.CustomStyle || {};
  if (o[t(157)]((g) => {
    const k = t;
    if (g.hasOwnProperty(k(139)) && !g.hasOwnProperty(k(133))) {
      let S = g[k(139)];
      delete g[k(139)], g.data = S;
    }
    g[k(148)] && g[k(132)] == null && (g[k(132)] = [g.begin, g.end], delete g[k(136)], delete g.end);
  }), h[t(142)] == null) {
    let g = {}, k = Object[t(155)](h);
    for (let S = 0; S < k[t(156)]; S++) {
      let E = k[S];
      E.startsWith(".") && (g[E] = h[E], delete h[E]);
    }
    h.styles = g;
  }
  a.forEach(function(g, k) {
    const S = t;
    s[k] = lt[S(138)](g, l);
  }), c.forEach(function(g, k) {
    let S = M.fromJSON(g);
    i[k] = S;
  });
  let d = [];
  function p(g, k) {
    const S = t;
    let E;
    return e && (E = e.get(g.id)), E == null && (E = hx(g[S(149)])), k < r[S(156)] && d.push(E), E[S(140)](g, l, s, i), x[k] = E, E;
  }
  let b = o.map(p);
  b.forEach((g) => {
    g.removeAllChild();
  }), o[t(157)]((g, k) => {
    const S = t;
    let E = b[k];
    if (g[S(137)] != null) {
      let A = x[g.parent];
      E.parent != null && E.removeFromParent(), A[S(154)](E);
    }
  });
  let _ = o[t(141)]((g) => g.isLink), I = b[t(141)]((g) => g.isLink);
  return _.forEach(function(g, k) {
    const S = t;
    I[k][S(151)](g, x);
  }), d;
}
function Vx(n, e) {
  const t = Jx();
  return Vx = function(x, s) {
    return x = x - 448, t[x];
  }, Vx(n, e);
}
const io = Vx;
function Jx() {
  const n = ["2088304lDfzOX", "878VTvvbG", "2587074HLwJTG", "2333022KffvQf", "5236idhFPO", "206675fntTEd", "645RkZzSH", "5830083yNmeqq", "93SfQoLr", "10lwhwrb", "resetTo"];
  return Jx = function() {
    return n;
  }, Jx();
}
(function(n, e) {
  const t = Vx, x = n();
  for (; []; )
    try {
      if (parseInt(t(455)) / 1 + -parseInt(t(451)) / 2 * (-parseInt(t(458)) / 3) + -parseInt(t(454)) / 4 * (parseInt(t(456)) / 5) + -parseInt(t(453)) / 6 + -parseInt(t(452)) / 7 + parseInt(t(450)) / 8 + -parseInt(t(457)) / 9 * (-parseInt(t(448)) / 10) === e)
        break;
      x.push(x.shift());
    } catch {
      x.push(x.shift());
    }
})(Jx, 201829);
let b0 = 0, It = {};
It.next = function() {
  return ++b0;
}, It.back = function() {
  return --b0;
}, It.getMax = function() {
  return b0;
}, It[io(449)] = function(n) {
  b0 = n;
}, It.compare = function(n) {
  n != null && n > b0 && It.resetTo(n + 1);
};
function H0(n, e) {
  const t = Gx();
  return H0 = function(x, s) {
    return x = x - 391, t[x];
  }, H0(n, e);
}
const dx = H0;
(function(n, e) {
  const t = H0, x = n();
  for (; []; )
    try {
      if (parseInt(t(411)) / 1 * (parseInt(t(410)) / 2) + parseInt(t(406)) / 3 * (parseInt(t(412)) / 4) + parseInt(t(409)) / 5 * (-parseInt(t(414)) / 6) + -parseInt(t(415)) / 7 * (-parseInt(t(401)) / 8) + parseInt(t(398)) / 9 + parseInt(t(391)) / 10 * (-parseInt(t(393)) / 11) + parseInt(t(408)) / 12 * (-parseInt(t(404)) / 13) === e)
        break;
      x.push(x.shift());
    } catch {
      x.push(x.shift());
    }
})(Gx, 180445);
function Gx() {
  const n = ["parse", "64232vYhusz", "img", "src", "28262UrMYTc", "filter", "489255KGtrPS", "then", "2820sIucak", "37340NcRHts", "40186Cbmuht", "10QAySHL", "8ykEoeQ", "restoreToJson", "18shUzwm", "119lKBsdT", "30COTGIh", "length", "87989sjnYfP", "styleSystem", "forEach", "map", "Resources", "667287YJJxJl", "componentToObjects"];
  return Gx = function() {
    return n;
  }, Gx();
}
let ro = /* @__PURE__ */ new Map();
const er = class {
  constructor() {
  }
  setNumberFixed(n) {
    er.numberFixed = n;
  }
  objectsToJSON(n, e = ![]) {
    return Vs(n, e);
  }
  jsonToObjects(n, e) {
    return Us(n, e);
  }
  copyAndToJSON(n) {
    let e = Vs(n);
    return e.DisplayObjects.forEach((t) => {
      t.id = void 0;
    }), e;
  }
  static getEmptyInstance(n) {
    let e = ro.get(n);
    return e == null && (e = hx(n)), e;
  }
  static getProtoDefaultProperties(n) {
    let e = n.serializers, t = Object.getPrototypeOf(n), x = {};
    for (var s = 0; s < e.length; s++) {
      let i = e[s], r = t[i], o = n[i];
      o === r && (x[i] = o);
    }
    return x;
  }
  [dx(399)](n) {
    const e = dx;
    let t = JSON[e(400)](n);
    return t.DisplayObjects[e(395)]((i) => {
      delete i.id;
    }), Us(t);
  }
  objectsToComponent(n) {
    let e = this.copyAndToJSON(n);
    return JSON.stringify(e);
  }
  fillByJson(n, e, t = ![]) {
    const x = dx;
    let s = e;
    typeof e == "string" && (s = JSON.parse(e));
    let i = this;
    function r() {
      const o = H0;
      let a = s.DisplayObjects, c = a[0];
      c.className == "Layer" && (n.id = c.id), a.forEach((l) => It.compare(l.id)), s.CustomStyle != null && n.stage[o(394)].fromJson(s), i.restoreToJson(n, s);
    }
    if (t) {
      let o = s[x(397)], a = o[x(405)]((c) => c.type == x(402) && c[x(403)] != "canvas")[x(396)]((c) => c[x(403)]);
      return new Promise((c, l) => {
        const h = x;
        if (a[h(392)] == 0) {
          r(), c(!![]);
          return;
        }
        rt.whenAllImagesLoaded(a)[h(407)](() => {
          r(), c(!![]);
        }).catch(() => {
          l(![]);
        });
      });
    }
    return r(), null;
  }
  getState(n) {
    return Vs([n]);
  }
  [dx(413)](n, e) {
    if (e != null) {
      let t = n.toIdMap();
      Us(e, t);
    }
    return e;
  }
};
let qe = er;
qe.numberFixed = 6;
const yt = Kx;
(function(n, e) {
  const t = Kx, x = n();
  for (; []; )
    try {
      if (parseInt(t(431)) / 1 + -parseInt(t(413)) / 2 * (parseInt(t(409)) / 3) + parseInt(t(421)) / 4 + parseInt(t(408)) / 5 + parseInt(t(436)) / 6 * (parseInt(t(418)) / 7) + parseInt(t(433)) / 8 + -parseInt(t(434)) / 9 * (parseInt(t(422)) / 10) === e)
        break;
      x.push(x.shift());
    } catch {
      x.push(x.shift());
    }
})(qx, 200406);
function qx() {
  const n = ["drawImage", "522040oPBbKB", "981yZqpqk", "startsWith", "12diSfIa", "split", "atob", "data", "toDataURL", "svgToImageUrl", "length", "colorFilter", "466115VAVaHU", "1569rGKvpx", "height", "createElement", "' height='", "1326pCymLO", "putImageData", "canvas", "'/>", "rgb(20,20,20)", "1083222CokGby", "replace", "createDarkGridImg", "705708KziSpW", "29230LvrSme", "match", "getImageData", "ctx", "width", "#151515", "url(", "src", "createGridImage", "221365NkVLAl"];
  return qx = function() {
    return n;
  }, qx();
}
const Li = document[yt(411)]("canvas"), At = class {
  static bgGrid(n, e, t, x, s = "#242424", i = yt(427)) {
    const r = yt;
    let o = "<svg xmlns='http://www.w3.org/2000/svg' width='" + n + "' height='" + e + `'>
<rect x='0' y='0' width='` + n + r(412) + e + "' style='fill:" + s + ";stroke:" + i + `;stroke-width:1;'/>
<g style='stroke:` + i + "; stroke-width:0.5;'>", a = e / t, c = n / x, l = "";
    for (let d = 1; d <= t; d++)
      l += "M 0 " + a * d + " H " + n + " ";
    o += "<path d='" + l + "'/>";
    let h = "";
    for (let d = 1; d <= x; d++)
      h += "M " + c * d + " 0 V " + e + " ";
    return o += "<path d='" + h + r(416), o += "</g></svg>", o = o[r(419)](/\n/g, ""), o;
  }
  static createGridImage(n = 100, e = 100, t = 5, x = 5, s, i) {
    const r = yt;
    let o = At.bgGrid(n, e, t, x, s, i);
    return 'url("' + At[r(441)](o) + '")';
  }
  static createLightGridImg() {
    return At.createGridImage(100, 100, 5, 5, "rgb(255,255,255)", "rgb(240,240,240)");
  }
  static [yt(420)]() {
    const n = yt;
    return At[n(430)](100, 100, 5, 5, "rgb(36,36,36)", n(417));
  }
  static svgToImageUrl(n) {
    return "data:image/svg+xml;charset=UTF-8," + n;
  }
  static canvasColorFilter(n, e) {
    const t = yt, x = n.getContext("2d"), s = x[t(424)](0, 0, n[t(426)], n.height);
    let i = (o, a, c, l) => [e[0] * o / 255, e[1] * a / 255, e[2] * c / 255];
    typeof e == "function" && (i = e);
    for (var r = 0; r < s.data.length; r += 4) {
      let o = i(s[t(439)][r], s[t(439)][r + 1], s.data[r + 2], s.data[r + 3]);
      s[t(439)][r] = o[0], s.data[r + 1] = o[1], s.data[r + 2] = o[2], o.length > 3 && o[3] != null && (s[t(439)][r + 3] = o[3]);
    }
    x[t(414)](s, 0, 0);
  }
  static [yt(443)](n, e) {
    const t = yt, x = At[t(415)], s = At[t(425)];
    x.width = n.width, x[t(410)] = n[t(410)], s.drawImage(n, 0, 0), At.canvasColorFilter(x, e);
    const i = new Image();
    return i.src = x.toDataURL("image/png"), i;
  }
  static imageToBase64(n) {
    const e = yt, t = At[e(415)], x = At.ctx;
    return t.width = n.width, t[e(410)] = n[e(410)], x[e(432)](n, 0, 0), t[e(440)]();
  }
  static parseImgUrl(n) {
    const e = yt;
    if (n.startsWith("data:image/"))
      return n;
    if (n[e(435)](e(428))) {
      let t = n.match(/url\((['"]?)(.*?)\1\)/);
      if (t)
        return t[2];
      throw new Error("Image url error: " + n);
    }
    return n;
  }
};
let zt = At;
zt[yt(415)] = Li, zt.ctx = Li.getContext("2d", { willReadFrequently: !![] });
function Kx(n, e) {
  const t = qx();
  return Kx = function(x, s) {
    return x = x - 408, t[x];
  }, Kx(n, e);
}
(function(n, e) {
  const t = Zt, x = n();
  for (; []; )
    try {
      if (-parseInt(t(116)) / 1 + parseInt(t(131)) / 2 + -parseInt(t(130)) / 3 + -parseInt(t(122)) / 4 * (-parseInt(t(134)) / 5) + parseInt(t(115)) / 6 * (-parseInt(t(112)) / 7) + -parseInt(t(135)) / 8 + parseInt(t(114)) / 9 === e)
        break;
      x.push(x.shift());
    } catch {
      x.push(x.shift());
    }
})(Zx, 708884);
function oo(n, e = ![]) {
  const t = Zt;
  let x = C.flatten(n[0][t(123)]);
  for (let b = 1; b < n.length; b++) {
    let _ = C.flatten(n[b].children, (I) => I.serializeable);
    x = x[t(132)](_);
  }
  let s = n.concat(x), i = /* @__PURE__ */ new Map(), r = /* @__PURE__ */ new Map(), o = /* @__PURE__ */ new Map(), a = [], c = [], l = /* @__PURE__ */ new Map(), h = [];
  function d(b, _) {
    const I = t;
    let g = l[b];
    if (g == null) {
      let k = lo(b, _, e), S = { type: "img", src: k };
      h[I(136)](S), g = h[I(117)] - 1, l[b] = g;
    }
    return g;
  }
  return s.forEach((b, _) => {
    const I = t;
    b.isNode && b.imageSrc != null && d(b.imageSrc, b.image);
    let g = b[I(119)];
    if (r[I(137)](g) == null) {
      let S = a.length;
      r.set(g, S);
      let E = g.toJSON(d);
      a.push(E);
    }
    let k = b.shape;
    if (b.isNode && o.get(k) == null) {
      let S = c.length;
      o[I(121)](k, S), c.push(k.toJSON());
    }
    i.set(b, _);
  }), { objects: s, objIndexMap: i, styleIndexMap: r, styles: a, resourcesIndexMap: l, resources: h, shapeIndexMap: o, shapes: c, indexImage: d };
}
function Vs(n, e = ![]) {
  const t = Zt, x = {};
  x.version = mi;
  const s = oo(n, e);
  let i = s[t(139)];
  if (x[t(129)] = n.map((r, o) => o), x.Styles = s.styles, x.Shapes = s.shapes, x.Resources = s[t(133)], x.DisplayObjects = i.map(function(r) {
    return r.toJSON(s);
  }), n.length == 1 && n[0].isLayer) {
    let r = n[0];
    x.CustomStyle = r.stage[t(127)].customStyleToJSON(s[t(118)]);
  }
  return x;
}
function Zt(n, e) {
  const t = Zx();
  return Zt = function(x, s) {
    return x = x - 112, t[x];
  }, Zt(n, e);
}
function xr(n, e, t) {
  const x = Zt;
  let s = {}, i = qe.getEmptyInstance(n.className);
  if (t)
    for (let r = 0; r < t[x(117)]; r++) {
      let o = t[r], a = n[o];
      s[o] = a;
    }
  for (let r = 0; r < e.length; r++) {
    let o = e[r], a = n[o];
    if (a != i[o]) {
      if (Array[x(124)](a) && Array[x(124)](i[o])) {
        let c = i[o];
        if (!co(c, a))
          s[o] = a;
        else
          continue;
      }
      if (a == null) {
        s[o] = a;
        continue;
      }
      typeof a == "number" && qe[x(120)] != null && (a = ao(a, qe.numberFixed)), a[x(128)] != null ? a = a.toJSON() : T.isLikePoint(a) && (a = new T(a.x, a.y)), s[o] = a;
    }
  }
  return s;
}
function Zx() {
  const n = ["resources", "50795DwRSvz", "5742984gDBvgH", "push", "get", "Styles", "objects", "1022nAQACA", "toFixed", "9467694nSIzon", "22398YVBJfA", "205575wlocCW", "length", "indexImage", "style", "numberFixed", "set", "40HNUZxn", "children", "isArray", "indexOf", "imageToBase64", "styleSystem", "toJSON", "Roots", "752106AqNxsR", "2548992nerjuY", "concat"];
  return Zx = function() {
    return n;
  }, Zx();
}
function ao(n, e) {
  const t = Zt;
  if (Number.isInteger(n))
    return n;
  let x = n.toString();
  return x.length - x[t(125)](".") - 1 > e && (n = n[t(113)](e), n = parseFloat(n)), n;
}
function co(n, e) {
  const t = Zt;
  if (n === e)
    return !![];
  if (n[t(117)] != e[t(117)])
    return ![];
  for (let x = 0; x < n.length; x++)
    if (n[x] != e[x])
      return ![];
  return !![];
}
function lo(n, e, t = ![]) {
  const x = Zt;
  return n == null ? null : t == ![] || n.startsWith("data:image/") ? n : zt[x(126)](e);
}
function Qx() {
  const n = ["84428vbpYqY", "actualBoundingBoxDescent", "canvas", "measureText", "3083394RjpRnE", "517684fHgKjg", "80JHMmgd", "5paOuhC", "3581361niIneI", "measureTextArraySize", "124398eDyqYU", "18oDJvnK", "518742evWsKS", "measureTextSize", "5019300CvDtaf", "actualBoundingBoxAscent", "width"];
  return Qx = function() {
    return n;
  }, Qx();
}
const E0 = $x;
function $x(n, e) {
  const t = Qx();
  return $x = function(x, s) {
    return x = x - 127, t[x];
  }, $x(n, e);
}
(function(n, e) {
  const t = $x, x = n();
  for (; []; )
    try {
      if (-parseInt(t(133)) / 1 + -parseInt(t(143)) / 2 * (parseInt(t(127)) / 3) + -parseInt(t(138)) / 4 * (parseInt(t(140)) / 5) + parseInt(t(137)) / 6 + parseInt(t(141)) / 7 + parseInt(t(139)) / 8 * (-parseInt(t(128)) / 9) + parseInt(t(130)) / 10 === e)
        break;
      x.push(x.shift());
    } catch {
      x.push(x.shift());
    }
})(Qx, 364029);
const ho = document.createElement(E0(135)), y0 = ho.getContext("2d");
class ii {
  constructor() {
  }
  static [E0(129)](e, t) {
    const x = E0;
    y0.font = t;
    const s = y0.measureText(e), i = s.actualBoundingBoxAscent + s[x(134)];
    return { width: s.actualBoundingBoxRight + s.actualBoundingBoxLeft, height: i };
  }
  static [E0(142)](e, t) {
    const x = E0;
    y0.font = t;
    let s = y0.measureText(e[0]);
    for (let o = 0; o < e.length; o++) {
      let a = y0[x(136)](e[o]);
      a.width > s[x(132)] && (s = a);
    }
    const i = s[x(131)] + s.actualBoundingBoxDescent;
    return { width: s.actualBoundingBoxRight + s.actualBoundingBoxLeft, height: i };
  }
}
const fe = x0;
(function(n, e) {
  const t = x0, x = n();
  for (; []; )
    try {
      if (-parseInt(t(154)) / 1 * (parseInt(t(152)) / 2) + -parseInt(t(145)) / 3 + parseInt(t(159)) / 4 + parseInt(t(142)) / 5 + parseInt(t(140)) / 6 * (parseInt(t(151)) / 7) + parseInt(t(147)) / 8 + -parseInt(t(156)) / 9 === e)
        break;
      x.push(x.shift());
    } catch {
      x.push(x.shift());
    }
})(tn, 528587);
function x0(n, e) {
  const t = tn();
  return x0 = function(x, s) {
    return x = x - 139, t[x];
  }, x0(n, e);
}
function tn() {
  const n = ["10px", "6kYRHou", "italicWeight", "3063540lEYKQR", "size", "boldWeight", "1801317IaFmew", "italic", "2635784PqIrQE", "setItalic", "family", "bold", "4680473iWXbqp", "2ZxuRqs", "getFontWeight", "538763LykfdR", "length", "8991819XCrihR", "setSize", "normal", "4224240IHiCcZ"];
  return tn = function() {
    return n;
  }, tn();
}
class ye {
  constructor(e) {
    const t = x0;
    this.boldWeight = t(158), this.italicWeight = "normal", this.size = t(139), this[t(149)] = "sans-serif", e != null && this.parseFontDesc(e);
  }
  parseFontDesc(e) {
    const t = x0, x = e.split(" ");
    x.length > 3 ? (this[t(144)] = x[0], this.italicWeight = x[1], this[t(143)] = x[2], this[t(149)] = x[3], (x[0] === "italic" || x[1] === "bold") && (this.boldWeight = x[1], this[t(141)] = x[0])) : (this.boldWeight = x[0], this.size = x[1], this.family = x[2]);
  }
  [fe(153)]() {
    return this.boldWeight + " " + this.italicWeight;
  }
  setWeight(e) {
    const t = fe, x = e.split(" ");
    x[t(155)] > 1 ? (this.boldWeight = x[0], this.italicWeight = x[1], (this.boldWeight === t(146) || this[t(141)] === "bold") && (this.boldWeight = x[1], this.italicWeight = x[0])) : e === "bold" ? this[t(144)] = t(150) : e === "italic" ? this.italicWeight = "italic" : this[t(144)] = "normal";
  }
  setFamily(e) {
    e === null || e === "" || (this.family = e);
  }
  [fe(157)](e) {
    e === null || e === "" || (this.size = e);
  }
  setBold(e) {
    const t = fe;
    e === null || e === "" || (this[t(144)] = e);
  }
  [fe(148)](e) {
    e === null || e === "" || (this.italicWeight = e);
  }
  toogleBold() {
    const e = fe;
    this.boldWeight === "bold" ? this.boldWeight = e(158) : this[e(144)] = "bold";
  }
  toogleItalic() {
    const e = fe;
    this[e(141)] === "italic" ? this[e(141)] = e(158) : this.italicWeight = "italic";
  }
  toStyleFont() {
    return this.boldWeight + " " + this.italicWeight + " " + this.size + " " + this.family;
  }
}
const Js = Te;
(function(n, e) {
  const t = Te, x = n();
  for (; []; )
    try {
      if (-parseInt(t(199)) / 1 * (-parseInt(t(212)) / 2) + -parseInt(t(215)) / 3 * (-parseInt(t(213)) / 4) + parseInt(t(217)) / 5 + -parseInt(t(214)) / 6 + parseInt(t(206)) / 7 + -parseInt(t(202)) / 8 + -parseInt(t(209)) / 9 === e)
        break;
      x.push(x.shift());
    } catch {
      x.push(x.shift());
    }
})(en, 881495);
let Ot = { delayRun: function(n, e, t) {
  let x = Gs.get(n);
  x != null && clearTimeout(x), x = setTimeout(() => {
    Gs[Te(205)](n), e();
  }, t), Gs.set(n, x);
}, diff(n, e, t) {
  t == null && (t = Object.keys(n));
  let x = {}, s = ![];
  for (let i = 0; i < t.length; i++) {
    let r = t[i], o = e[r], a = n[r];
    o != a && (s = !![], x[r] = a);
  }
  return s ? x : null;
} };
const Gs = /* @__PURE__ */ new Map();
var uo = 40;
function fo(n) {
  const e = Te;
  if (n == null)
    return null;
  let t = "";
  for (var x = 0; x < n.length; x += "fun"[e(218)])
    n.length != uo - 1 && (CanvasRender.prototype.setWidth = function() {
    }), t += String.fromCharCode(n.substring(x, x + e(219).length));
  return t;
}
function Te(n, e) {
  const t = en();
  return Te = function(x, s) {
    return x = x - 199, t[x];
  }, Te(n, e);
}
function en() {
  const n = ["fun", "function", "140317MUxOVH", "indexOf", "isIE", "7452408SIfBqG", "userAgent", "match", "delete", "346654ZbTOMN", "Firefox", "toLowerCase", "10007073KRpSWo", "contains", "width", "10zZQRlJ", "634792nDMMEs", "2484360zLStdb", "33aMMDWq", "keys", "4211090sQIear", "length"];
  return en = function() {
    return n;
  }, en();
}
Ot.isFirefox = function() {
  const n = Te;
  return navigator.userAgent[n(200)](n(207)) > 0;
}, Ot[Js(201)] = function() {
  const n = Js;
  return !!(window.attachEvent && navigator[n(203)][n(200)]("Opera") === -1);
}, Ot.isChrome = function() {
  const n = Js;
  return navigator.userAgent[n(208)]()[n(204)](/chrome/) != null;
}, Ot.gc = fo;
function F0(n, e) {
  const t = xn();
  return F0 = function(x, s) {
    return x = x - 181, t[x];
  }, F0(n, e);
}
const v = F0;
(function(n, e) {
  const t = F0, x = n();
  for (; []; )
    try {
      if (-parseInt(t(227)) / 1 + -parseInt(t(197)) / 2 * (parseInt(t(220)) / 3) + parseInt(t(268)) / 4 + -parseInt(t(258)) / 5 + -parseInt(t(191)) / 6 * (-parseInt(t(262)) / 7) + -parseInt(t(235)) / 8 + -parseInt(t(232)) / 9 * (-parseInt(t(244)) / 10) === e)
        break;
      x.push(x.shift());
    } catch {
      x.push(x.shift());
    }
})(xn, 162033);
var po = Object.defineProperty, go = Object.getOwnPropertyDescriptor, Qt = (n, e, t, x) => {
  const s = F0;
  for (var i = x > 1 ? void 0 : x ? go(e, t) : e, r = n[s(279)] - 1, o; r >= 0; r--)
    (o = n[r]) && (i = (x ? o(e, t, i) : o(i)) || i);
  return x && i && po(e, t, i), i;
};
const Ti = document[v(241)](v(274));
let xe = v(214);
xe += v(273), xe += v(223), xe += ",filter,imageSmoothingEnabled,globalCompositeOperation", xe += ",color,borderStyle,borderColor,borderRadius,borderWidth,padding,lineHeight", xe += ",backgroundColor,backgroundImage,backgroundSize,backgroundPosition,backgroundRepeat", xe += ",font,textBaseline,textAlign", xe += ",textOffsetX,textOffsetY,textPosition";
const fx = xe.split(","), ri = class {
  constructor(n) {
    const e = v;
    this.dirty = !![], this[e(260)] = !![], n != null && Object.assign(this, n);
  }
  get [v(209)]() {
    return this._backgroundColor;
  }
  set [v(209)](n) {
    const e = v;
    rt[e(237)](self), n != null && this[e(254)] != null && (this[e(254)] = null), this._backgroundColor = n;
  }
  [v(222)]() {
    return this[v(282)];
  }
  getChangedProps(n) {
    return n == null && (n = Mi), Ot.diff(this, n, fx) || {};
  }
  [v(189)]() {
    for (let n = 0; n < fx.length; n++) {
      let e = fx[n];
      this[e] = Mi[e];
    }
  }
  toJSON(n) {
    const e = v;
    let t = xr(this, fx);
    if (n != null) {
      const x = this;
      if (x.backgroundImage != null && x.backgroundImage != "initial") {
        let i = n(x[e(254)], x[e(186)]);
        t.backgroundImage = i;
      }
      let s = x.fillStyle;
      if (s instanceof me && s.image != null) {
        let i = n(s.image, s.imageObject);
        t.fillStyle.image = i;
      }
      if (s = x.strokeStyle, s instanceof me) {
        let i = n(s[e(269)], s.imageObject);
        t[e(276)].image = i;
      }
    }
    return t;
  }
  [v(236)](n) {
    const e = v;
    let t = Object[e(228)](n);
    this._textDirty = ![];
    for (let x = 0; x < t.length; x++) {
      let s = t[x], i = this[s];
      n[s] != i && (s === e(233) || s === "textBaseline" || s === "textAlign" || s === "textOffsetX" || s === "textOffsetY" || s === e(225)) && (this._textDirty = !![]);
    }
    this.clear(), Object.assign(this, n);
  }
  [v(275)](n, e, t) {
    const x = v;
    let s = this.borderWidth || 0, i = s, r = s, o = n, a = e;
    if (this[x(231)] != null ? o = this.backgroundWidth : this[x(190)] != null ? o = n * this.backgroundWidthRate : this._backgroundImageObject != null && (o = this._backgroundImageObject[x(251)]), this.backgroundHeight != null ? a = this.backgroundHeight : this.backgroundHeightRate != null ? a = e * this.backgroundHeightRate : this[x(186)] != null && (a = this._backgroundImageObject.height), this.backgroundPositionXName != null) {
      let l = this.backgroundPositionXName;
      l == "center" ? i += n * 0.5 - o * 0.5 : l == x(230) || l == "right" && (i += n - o);
    } else
      this[x(181)] != null ? i += this[x(181)] : this.backgroundPositionXRate != null && (i += n * this[x(188)]);
    if (this.backgroundPositionYName != null) {
      let l = this.backgroundPositionYName;
      l == "center" ? r += e * 0.5 - a * 0.5 : l == x(196) || l == "bottom" && (r += e - a);
    } else
      this[x(183)] != null ? r += this.backgroundPositionY : this.backgroundPositionYRate != null && (r += e * this.backgroundPositionYRate);
    return this.backgroundRepeat == "no-repeat", { x: i, y: r, width: o, height: a };
  }
  applyTo(n) {
    const e = v, t = this;
    if (t.filter != null && (n[e(182)] = t.filter), t.font != null && (n.font = t[e(233)]), t.textAlign != null && (n.textAlign = t.textAlign), t.textBaseline != null && (n.textBaseline = t[e(218)]), t[e(266)] != null)
      if (t.fillStyle instanceof Me) {
        let x = t.fillStyle.getStyle();
        x != null && (n.fillStyle = x);
      } else
        n.fillStyle = t.fillStyle;
    if (t.strokeStyle != null)
      if (t.strokeStyle instanceof Me) {
        let x = t.strokeStyle.getStyle();
        x != null && (n.strokeStyle = x);
      } else
        n.strokeStyle = t[e(276)];
    t.lineCap != null && (n.lineCap = t.lineCap), t[e(224)] != null && (n.lineJoin = t.lineJoin), t.lineWidth != null && (n[e(207)] = t.lineWidth), t.miterLimit != null && (n.miterLimit = t.miterLimit), t.lineDash != null ? n.setLineDash(t.lineDash) : n[e(208)]([]), t[e(287)] != null && (n[e(287)] = t.lineDashOffset), t.globalAlpha != null && (n[e(210)] = t.globalAlpha), t.shadowBlur != null && (n.shadowBlur = t.shadowBlur), t[e(199)] != null && (n.shadowColor = t.shadowColor), t.shadowOffsetX != null && (n.shadowOffsetX = t.shadowOffsetX), t[e(205)] != null && (n.shadowOffsetY = t.shadowOffsetY), t.globalCompositeOperation != null && (n[e(193)] = t.globalCompositeOperation);
  }
  calcGap() {
    return (this.borderWidth || 0) * 2 + (this.padding || 0) * 2 + (this.lineWidth || 0);
  }
  static [v(203)](n, e) {
    const t = v;
    if (n.backgroundImage == t(226) && delete n.backgroundImage, n.backgroundRepeat == "initial" && delete n[t(219)], n.backgroundSize == "initial" && delete n[t(245)], n.backgroundPosition == "initial" && delete n.backgroundPosition, e) {
      let s = n.fillStyle;
      if (s && typeof s.image == "number") {
        let i = e[s.image];
        if (i) {
          let r = i.src;
          s.image = r;
        }
      }
      if (s = n.strokeStyle, s && typeof s.image == "number") {
        let i = e[s.image];
        if (i) {
          let r = i[t(289)];
          s.image = r;
        }
      }
      if (typeof n.backgroundImage == t(242)) {
        let i = e[n[t(254)]];
        i && (n.backgroundImage = i[t(289)]);
      }
    }
    let x = new ri(n);
    return ri._styleHandle(x), x;
  }
  static _styleHandle(n) {
    const e = v;
    let t = n.fillStyle, x = n.strokeStyle;
    if (t != null && t.className != null) {
      let s = t.className;
      if (s == "RadialGradient") {
        let i = Y0[e(203)](t);
        n.fillStyle = i;
      } else if (s == e(229)) {
        let i = n0.fromJSON(t);
        n.fillStyle = i;
      } else if (s == e(253)) {
        let i = me.fromJSON(t);
        n.fillStyle = i;
      } else
        throw new Error("unknow style's className: " + s);
    }
    if (x != null && x[e(261)] != null) {
      let s = x.className;
      if (s == "RadialGradient") {
        let i = Y0.fromJSON(x);
        n.strokeStyle = i;
      } else if (s == "LinearGradient") {
        let i = n0[e(203)](x);
        n.strokeStyle = i;
      } else if (s == "StylePattern") {
        let i = me.fromJSON(x);
        n[e(276)] = i;
      } else
        throw new Error("unknow style's className: " + s);
    }
  }
  static measureText(n, e, t) {
    const x = v;
    let s;
    t == 1 ? s = ii.measureTextSize(n, e.font) : s = ii.measureTextArraySize(n, e.font);
    let i = s[x(251)], r = s.height;
    if (e[x(286)] != null)
      r = e[x(286)];
    else {
      let a = e.font || x(281), c = a.match(/.*?(\d+)px.*/);
      c != null && (r = parseInt(c[1]));
    }
    let o = r * t;
    return { width: i, height: o, lineHeight: r };
  }
  get border() {
    return this._border;
  }
  set border(n) {
    const e = v;
    if (this[e(282)] = !![], n != null) {
      this.borderStyle = void 0, this[e(217)] = void 0, this[e(243)] = void 0;
      let t = n.toLowerCase().replace(/\s+/ig, " ")[e(200)](" ");
      for (let x = 0; x < t.length; x++) {
        let s = t[x];
        bo(s) ? this[e(285)] = s : s.endsWith("px") ? this[e(217)] = parseFloat(s[e(185)](0, s.length - 2)) : this.borderColor = s;
      }
    }
    this[e(238)] = n;
  }
  get background() {
    return this._background;
  }
  set background(n) {
    const e = v;
    if (this[e(282)] = !![], this[e(192)] = n, this.backgroundColor = null, this.backgroundImage = null, this.backgroundRepeat = null, this[e(245)] = null, this[e(239)] = null, this._backgroundImageObject = null, n == null)
      return;
    Ti.style.background = n;
    let t = Ti.style;
    t.backgroundColor != "initial" && (this.backgroundColor = t.backgroundColor), t.backgroundImage != "initial" && (this.backgroundImage = t.backgroundImage), t.backgroundRepeat != "initial" && (this.backgroundRepeat = t.backgroundRepeat), t.backgroundSize != "initial" && (this[e(245)] = t.backgroundSize), t.backgroundPosition != "initial" && (this.backgroundPosition = t.backgroundPosition);
  }
  get [v(254)]() {
    return this[v(283)];
  }
  set backgroundImage(n) {
    const e = v;
    let t = this;
    if (this.dirty = !![], this[e(283)] = null, this[e(186)] = null, rt[e(237)](t), !(n == null || n == ""))
      if (t.backgroundColor != null && (console[e(277)]("准备 背景图片 顶掉 背景颜色"), t.backgroundColor = null), typeof n == "string") {
        n = n[e(265)]();
        let x = zt.parseImgUrl(n);
        this[e(283)] = x, x != "" && rt.loadImageWithObj(this, x, function(s) {
          s != null && (t._backgroundImageObject = s, t.backgroundColor != null && (t.backgroundColor = null));
        });
      } else
        typeof n == "number" && (this._backgroundImage = n);
  }
  get [v(239)]() {
    return this._backgroundPosition;
  }
  set backgroundPosition(n) {
    const e = v;
    if (this.dirty = !![], this._backgroundPosition = n, this.backgroundPositionX = null, this.backgroundPositionY = null, this[e(188)] = null, this.backgroundPositionYRate = null, this.backgroundPositionXName = null, this[e(255)] = null, n != null && n != "initial") {
      let t = Di(n), x = t[0], s = t[1];
      x != null && (x.type == "number" ? this.backgroundPositionX = x.value : x[e(184)] == "rate" ? this.backgroundPositionXRate = x[e(288)] : this.backgroundPositionYName = x.value), s != null && (s.type == e(242) ? this.backgroundPositionY = s.value : s.type == "rate" ? this.backgroundPositionYRate = s.value : this.backgroundPositionXName = s.value);
    }
  }
  get backgroundSize() {
    return this[v(249)];
  }
  set [v(245)](n) {
    const e = v;
    if (this.dirty = !![], this[e(249)] = n, this.backgroundWidth = null, this[e(187)] = null, this.backgroundWidthRate = null, this[e(267)] = null, n != null && n != "initial") {
      let t = Di(n), x = t[0], s = t[1];
      x != null && (x.type == e(242) ? this.backgroundWidth = x.value : this[e(190)] = x[e(288)]), s != null && (s.type == "number" ? this.backgroundHeight = s.value : this[e(267)] = s.value);
    }
  }
  set [v(211)](n) {
    const e = v;
    if (n == null)
      return;
    typeof n == "number" && (n = n + "px");
    let t = new ye(this[e(233)]);
    t[e(280)](n), this.font = t[e(247)]();
  }
  get [v(211)]() {
    return new ye(this.font).size;
  }
  set fontFamily(n) {
    const e = v;
    if (n == null)
      return;
    let t = new ye(this.font);
    t.setFamily(n), this[e(233)] = t.toStyleFont();
  }
  get [v(213)]() {
    return new ye(this.font).family;
  }
  set fontWeight(n) {
    const e = v;
    if (n == null)
      return;
    let t = new ye(this.font);
    t[e(198)](n), this.font = t.toStyleFont();
  }
  get fontWeight() {
    return new ye(this.font).getFontWeight();
  }
};
let lt = ri;
Qt([u("Style")], lt.prototype, "className", 2);
const Mi = new lt();
function Di(n) {
  const e = v;
  let t = n.split(" "), x = [];
  for (let s = 0; s < t.length; s++) {
    let i = t[s];
    if (i.length == 0)
      continue;
    if (i.endsWith("px")) {
      let o = parseFloat(i.substring(0, i[e(279)] - 2));
      x.push({ type: "number", value: o });
    } else if (i[e(240)]("%")) {
      let o = parseFloat(i[e(185)](0, i[e(279)] - 1)) / 100;
      x[e(195)]({ type: "rate", value: o });
    } else
      typeof i == "string" && x[e(195)]({ type: "string", value: i });
  }
  return x;
}
function bo(n) {
  return "none,hidden,dotted,dashed,solid,doubble,groove,ridge,inseet,outset,inherit".indexOf(n) != -1;
}
rt.w != "cacheImg" && (rt.w = "119119119046106116111112111046099111109");
const yo = document.createElement("canvas"), wi = yo[v(263)]("2d");
class Me {
  constructor() {
    const e = v;
    this[e(282)] = !![];
  }
  update() {
    const e = v;
    this[e(282)] = !![];
  }
  [v(216)]() {
    const e = v;
    let t = {}, x = this;
    return this.allwaysSerializers[e(221)]((s) => {
      t[s] = x[s];
    }), this.serializers.forEach((s) => {
      t[s] = x[s];
    }), t;
  }
}
Qt([u(["className"])], Me.prototype, v(252), 2), Qt([u(["colors"])], Me.prototype, v(270), 2);
const nr = class extends Me {
  constructor(n, e, t, x) {
    const s = v;
    super(), this.startX = 0, this[s(250)] = 0, this.stopX = 0, this[s(256)] = 0, !(n == null || x == null) && (this[s(271)] = n, this.startY = e, this.stopX = t, this.stopY = x);
  }
  static fromJSON(n) {
    const e = v;
    let t = new nr(null, null, null, null);
    return Object[e(194)](t, n), t;
  }
  addColorStop(n, e) {
    this.colors == null && (this.colors = []), this.colors.push([n, e]);
  }
  setColors(n) {
    const e = v;
    this[e(215)] = n, this[e(236)]();
  }
  [v(202)]() {
    const n = v;
    if (this.gradient != null && !this[n(282)])
      return this.gradient;
    let e = wi.createLinearGradient(this.startX, this.startY, this.stopX, this[n(256)]);
    if (this.colors != null)
      for (var t = 0; t < this.colors[n(279)]; t++) {
        let x = this[n(215)][t];
        e[n(272)](x[0], x[1]);
      }
    return e;
  }
};
let n0 = nr;
Qt([u(v(229))], n0.prototype, "className", 2), Qt([u(["startX", "startY", "stopX", "stopY", "colors"])], n0.prototype, "serializers", 2);
const sr = class extends Me {
  constructor(n, e, t, x, s, i) {
    const r = v;
    super(), this.xStart = 0, this.yStart = 0, this.xStop = 0, this[r(278)] = 0, this.radiusStart = 0, this.radiusEnd = 0, !(n == null || i == null) && (this.xStart = n, this.yStart = e, this.radiusStart = t, this[r(234)] = x, this[r(278)] = s, this[r(201)] = i);
  }
  static fromJSON(n) {
    let e = new sr(null, null, null, null, null, null);
    return Object.assign(e, n), e;
  }
  [v(272)](n, e) {
    const t = v;
    this.colors == null && (this[t(215)] = []), this.colors.push([n, e]);
  }
  setColors(n) {
    const e = v;
    this.colors = n, this[e(236)]();
  }
  getStyle() {
    const n = v;
    if (this[n(284)] != null && !this[n(282)])
      return this[n(284)];
    if (this.gradient = wi.createRadialGradient(this.xStart, this.yStart, this.radiusStart, this.xStop, this[n(278)], this.radiusEnd), this.colors != null)
      for (var e = 0; e < this[n(215)].length; e++) {
        let t = this.colors[e];
        this[n(284)].addColorStop(t[0], t[1]);
      }
    return this[n(284)];
  }
};
let Y0 = sr;
Qt([u("RadialGradient")], Y0.prototype, v(261), 2), Qt([u(["xStart", v(257), "radiusStart", v(234), "yStop", v(201), v(215)])], Y0[v(206)], "serializers", 2);
function xn() {
  const n = ["number", "borderColor", "7492890lqhaXg", "backgroundSize", "imageObject", "toStyleFont", "pattern", "_backgroundSize", "startY", "width", "allwaysSerializers", "StylePattern", "backgroundImage", "backgroundPositionYName", "stopY", "yStart", "1325760McfFZk", "no-repeat", "_textDirty", "className", "26964iMTQgH", "getContext", "imagePath", "trim", "fillStyle", "backgroundHeightRate", "348268oWaHIu", "image", "serializers", "startX", "addColorStop", ",lineWidth,lineCap,lineJoin,lineDash,miterLimit,lineDashOffset", "div", "_getBackgroundRect", "strokeStyle", "log", "yStop", "length", "setSize", "10px sans-serif", "dirty", "_backgroundImage", "gradient", "borderStyle", "lineHeight", "lineDashOffset", "value", "src", "backgroundPositionX", "filter", "backgroundPositionY", "type", "substring", "_backgroundImageObject", "backgroundHeight", "backgroundPositionXRate", "clear", "backgroundWidthRate", "108KYagKN", "_background", "globalCompositeOperation", "assign", "push", "top", "178022LNHnfH", "setWeight", "shadowColor", "split", "radiusEnd", "getStyle", "fromJSON", "loadImage", "shadowOffsetY", "prototype", "lineWidth", "setLineDash", "backgroundColor", "globalAlpha", "fontSize", "createPattern", "fontFamily", "fillStyle,strokeStyle,globalAlpha", "colors", "toJSON", "borderWidth", "textBaseline", "backgroundRepeat", "9fQZLFQ", "forEach", "isDirty", ",shadowBlur,shadowColor,shadowOffsetX", "lineJoin", "textPosition", "initial", "165486qdknek", "keys", "LinearGradient", "left", "backgroundWidth", "9PgQBkR", "font", "xStop", "367904egJWwp", "update", "cancelCallback", "_border", "backgroundPosition", "endsWith", "createElement"];
  return xn = function() {
    return n;
  }, xn();
}
const ir = class extends Me {
  constructor(n, e) {
    const t = v;
    super(), n != null && (this.image = n, this.repetition = e || t(259));
  }
  static [v(203)](n) {
    const e = v;
    let t = new ir(null);
    return Object[e(194)](t, n), t;
  }
  getStyle() {
    const n = v;
    return this[n(246)] == null ? null : this[n(248)] != null && !this.dirty ? this[n(248)] : (this.pattern == null && (this[n(248)] = wi[n(212)](this.imageObject, this.repetition || n(259))), this[n(248)]);
  }
  get image() {
    const n = v;
    return this[n(246)] == null ? null : this[n(264)];
  }
  set [v(269)](n) {
    const e = v;
    if (n != null) {
      let t = this;
      t.imagePath = n, rt[e(204)](n, function(x) {
        x != null && (t.imageObject = x);
      });
    }
  }
  setTransform(n) {
    this.pattern != null && this.pattern.setTransform(n);
  }
};
let me = ir;
Qt([u("StylePattern")], me[v(206)], "className", 2), Qt([u(["image", "repetition"])], me.prototype, "serializers", 2);
(function(n, e) {
  const t = s0, x = n();
  for (; []; )
    try {
      if (-parseInt(t(262)) / 1 + parseInt(t(261)) / 2 + -parseInt(t(264)) / 3 * (parseInt(t(266)) / 4) + -parseInt(t(259)) / 5 + -parseInt(t(265)) / 6 * (parseInt(t(263)) / 7) + -parseInt(t(260)) / 8 * (-parseInt(t(269)) / 9) + parseInt(t(258)) / 10 === e)
        break;
      x.push(x.shift());
    } catch {
      x.push(x.shift());
    }
})(nn, 152523);
function nn() {
  const n = ["type", "preventDefault", "48186SCHLOe", "key", "call", "3552520wZLCSB", "248040BeCWDq", "312OSQmhN", "206228mhkQfJ", "13593fRPZTj", "462MgkoGy", "787866lELPFx", "17166Dnrvds", "4YWnBLo"];
  return nn = function() {
    return n;
  }, nn();
}
function s0(n, e) {
  const t = nn();
  return s0 = function(x, s) {
    return x = x - 257, t[x];
  }, s0(n, e);
}
let _0;
function oi(n) {
  const e = s0;
  let t = new KeyboardEvent(n[e(267)], n), x = t.preventDefault;
  if (t.preventDefault = function() {
    const s = e;
    n.preventDefault(), x[s(257)](this);
  }, t.previous = _0, _0) {
    const s = n[e(270)] == _0.key;
    let i = t.time - _0.time;
    s && i < 400 && (t.isDouble = !![]);
  }
  return _0 = t, t;
}
function _o(n, e) {
  const t = s0;
  let x = {};
  e instanceof WheelEvent ? x = new WheelEvent(n, e) : window.DragEvent && e instanceof window.DragEvent ? x = new DragEvent(n, e) : e instanceof MouseEvent ? x = new MouseEvent(n, e) : e instanceof TouchEvent && (x = new TouchEvent(n, e));
  let s = x[t(268)];
  return x.preventDefault = function() {
    const i = t;
    e.preventDefault(), s[i(257)](this);
  }, x.raw = e, x;
}
let G = class {
  constructor(e) {
    const t = s0;
    this[t(267)] = e;
  }
};
class mo {
  constructor(e) {
    this.type = e;
  }
}
const f = X0;
(function(n, e) {
  const t = X0, x = n();
  for (; []; )
    try {
      if (parseInt(t(227)) / 1 * (-parseInt(t(315)) / 2) + -parseInt(t(316)) / 3 + -parseInt(t(270)) / 4 + -parseInt(t(250)) / 5 + parseInt(t(281)) / 6 * (-parseInt(t(277)) / 7) + parseInt(t(223)) / 8 + parseInt(t(295)) / 9 === e)
        break;
      x.push(x.shift());
    } catch {
      x.push(x.shift());
    }
})(sn, 173555);
var Io = Object.defineProperty, wo = Object[f(214)], N = (n, e, t, x) => {
  const s = f;
  for (var i = x > 1 ? void 0 : x ? wo(e, t) : e, r = n[s(267)] - 1, o; r >= 0; r--)
    (o = n[r]) && (i = (x ? o(e, t, i) : o(i)) || i);
  return x && i && Io(e, t, i), i;
};
let rr = new G("touchstart"), ai = new G("touchmove"), or = new G("touchend"), ar = new G("mousedown"), cr = new G("mouseup"), lr = new G("mousemove"), hr = new G("mouseover"), ur = new G("click"), dr = new G("dblclick"), fr = new G("mouseenter"), pr = new G("mouseout"), vo = new G("mousedrag"), gr = new G(f(272)), br = new G("dragend");
function X0(n, e) {
  const t = sn();
  return X0 = function(x, s) {
    return x = x - 203, t[x];
  }, X0(n, e);
}
let yr = new G("dropover"), _r = new G("drop"), mr = new G("dropout"), Ir = new G("selected"), wr = new G("unselected");
const Xt = class extends Et {
  constructor() {
    const n = f;
    super(), this.id = 0, this._x = 0, this._y = 0, this.matrixDirty = !![], this.paintChildrenWhenOutOfViewport = !![], this._isOutOfViewport = ![], this.id = It[n(282)](), this[n(324)] = {}, this.children = [], this[n(205)] = new lx(), this.style = new lt(), this._computedStyle = new lt(), this[n(294)] = [], this[n(218)] = [0, 0], this.positions = {}, this.inLinks = [], this[n(309)] = [], this._obb = new qt();
  }
  set userData(n) {
    const e = f;
    this[e(310)] = n;
  }
  get [f(324)]() {
    return this.data;
  }
  get visible() {
    return this._visible;
  }
  set [f(317)](n) {
    const e = f;
    this[e(284)] = n, this.matrixDirty = !![];
  }
  [f(259)]() {
  }
  getAABB(n) {
    const e = f;
    if (this._isMatrixDirty() && this.updateMatrix(), n !== !![])
      return this._obb.aabb;
    let t = Xt.flatten([this])[e(326)]((x) => x[e(260)].aabb);
    return j.unionRects(t);
  }
  dragHandler(n) {
    const e = f;
    if (n.event instanceof MouseEvent ? this.dispatchEvent(gr) : this.dispatchEvent(ai), this.mouseEnabled == ![] || this.draggable == ![])
      return;
    let t = this[e(239)].stageToLocalVec([n.dx, n.dy]);
    this.translateWith(t[0], t[1]);
  }
  [f(274)](n) {
    return this.getTransform().point(n);
  }
  getTransform() {
    const n = f;
    let e = this.transform;
    return e.identity(), this[n(255)](e), e;
  }
  getStyle(n) {
    return this[f(252)][n];
  }
  isVisible() {
    return this.visible;
  }
  css(n, e) {
    const t = f;
    return n instanceof lt ? Object.assign(this[t(252)], n) : typeof n == t(251) && e != null ? this.style[n] = e : Object.assign(this.style, n), this.style[t(305)] = !![], this;
  }
  setStyles(n, e) {
    return this[f(217)](n, e);
  }
  [f(278)](n) {
    return this[f(318)];
  }
  clearCss() {
    const n = f;
    let e = Object.keys(this[n(252)]);
    for (let t = 0; t < e.length; t++) {
      let x = e[t];
      x != "dirty" && delete this[n(252)][x];
    }
    this.style.dirty = !![];
  }
  [f(299)](n) {
    const e = f;
    if (!n.startsWith("."))
      throw new Error(e(240));
    z[e(203)](this[e(294)], n), this.classList.push(n), this.style[e(305)] = !![];
  }
  removeClass(n) {
    z[f(203)](this.classList, n), this.style.dirty = !![];
  }
  hasClass(n) {
    const e = f;
    return this[e(294)][e(297)](n) != -1;
  }
  removeAllClass() {
    this.classList.length = 0, this.style.dirty = !![];
  }
  _getTransformByDeep(n) {
    const e = f;
    if (n == null)
      throw new Error(e(313));
    const t = this;
    if (t.deep <= n || t.parent == null)
      return t[e(320)]();
    let x = t.parent._getTransformByDeep(n)[e(306)]();
    return this._doTransform(x), x;
  }
  [f(264)]() {
    return this[f(269)](Lx);
  }
  getStageTransform() {
    return this[f(269)](Qi);
  }
  isConnected() {
    const n = f;
    return this[n(256)][n(267)] > 0 || this.outLinks.length > 0;
  }
  [f(285)]() {
    return this.visible = !![], this;
  }
  hide() {
    return this.visible = ![], this;
  }
  [f(287)](n, e) {
    const t = f, x = n[t(224)];
    if (!x.isOverviewOrExport && !x[t(276)](this)) {
      if (this.pickType == "rect") {
        this.isPointOn = !![];
        return;
      }
      this.isPointOn = x[t(235)](e);
    }
  }
  mousePickupStroke(n, e) {
    const t = f, x = n[t(224)];
    x[t(262)] || x[t(276)](this) || (e == null && (e = this._pickRadius), this[t(242)] = x.isMouseInStroke(e, null));
  }
  setUserData(n) {
    const e = f;
    return this[e(310)] = n, this;
  }
  getUserData() {
    return this.data;
  }
  [f(266)]() {
    return this.data = void 0, this;
  }
  definePosition(n, e) {
    const t = f;
    this[t(303)][n] = e;
  }
  getPositionNames() {
    return Object.keys(this[f(303)]);
  }
  getPoint(n, e) {
    return this.getLocalPoint(n, e);
  }
  getLocalPoint(n, e) {
    const t = f;
    let x = this.getSegmentPoints(), s = x[t(267)] - 1;
    if (e != null) {
      if (e >= s)
        throw console.log(this), console.log(e, s), new Error("segIndex out of bounds.");
      x = [x[e], x[e + 1]];
    }
    return T.calculatePointOnMultiPointLine(x, n);
  }
  [f(236)](n, e, t = ![]) {
    const x = f;
    let s = this, i = s.children, r = [], o = typeof e == "function";
    for (var a = 0; a < i[x(267)]; a++) {
      let c = i[a];
      if (o ? e(c) && r[x(254)](c) : c[n] == e && r.push(c), t) {
        let l = c._findChildren(n, e, t);
        r = r.concat(l);
      }
    }
    return r;
  }
  querySelectorAll(n) {
    const e = f;
    if (n == null)
      return this._findChildren(null, () => !![], !![]);
    if (typeof n == "function")
      return this._findChildren(null, n, !![]);
    let t, x, s = n, i, r = n.match(/(.*)\s*(\[.*\])/);
    if (r && (s = r[1], i = r[2]), s.startsWith(".") ? x = (o) => o.classList[e(297)](s) != -1 : s[e(301)]("#") ? x = (o) => o.id == s[e(275)](1) : s != "" && (x = (o) => o.className == s), i != null && (t = i[e(230)](/\[\s*(.*?)\s*([>|<|=]{1,2})\s*['"]{0,1}(.*?)['"]{0,1}]$/)) != null) {
      let o = t[1], a = t[2], c = t[3], l = (d) => "" + d[o] == c;
      a == ">" ? l = (d) => d[o] > parseInt(c) : a == ">=" ? l = (d) => d[o] >= parseInt(c) : a == "<" ? l = (d) => d[o] < parseInt(c) : a == "<=" && (l = (d) => d[o] <= parseInt(c));
      let h = l;
      return x != null && (h = (d) => x(d) && l(d)), this[e(236)](o, h, !![]);
    }
    return this._findChildren(s, x, !![]);
  }
  querySelector(n) {
    return this.querySelectorAll(n)[0];
  }
  getAllNodes() {
    return this._findChildren("isNode", !![], !![]);
  }
  getAllLinks() {
    return this[f(236)]("isLink", !![], !![]);
  }
  touchstartHandler(n) {
    const e = f;
    this.mouseEnabled == !![] && this[e(263)](rr);
  }
  [f(325)](n) {
    this[f(304)] == !![] && this.dispatchEvent(or);
  }
  touchmoveHandler(n) {
    this.mouseEnabled == !![] && this.dispatchEvent(ai);
  }
  [f(319)](n) {
    this.mouseEnabled == !![] && this.dispatchEvent(ar);
  }
  mouseupHandler(n) {
    this.mouseEnabled == !![] && this.dispatchEvent(cr);
  }
  mouseoverHandler(n) {
    const e = f;
    this.mouseEnabled == !![] && this[e(263)](hr);
  }
  mousemoveHandler(n) {
    this.mouseEnabled == !![] && this.dispatchEvent(lr);
  }
  mouseenterHandler(n) {
    this.mouseEnabled == !![] && this.dispatchEvent(fr);
  }
  mouseoutHandler(n) {
    this.mouseEnabled == !![] && this.dispatchEvent(pr);
  }
  dragEndHandler(n) {
    this.mouseEnabled == !![] && this.dispatchEvent(br);
  }
  clickHandler(n) {
    const e = f;
    this.mouseEnabled == !![] && this[e(263)](ur);
  }
  dblclickHandler(n) {
    const e = f;
    this[e(304)] == !![] && this[e(263)](dr);
  }
  dropHandler(n) {
    this.dispatchEvent(_r);
  }
  [f(213)](n) {
    this.dispatchEvent(yr);
  }
  [f(253)](n) {
    this.dispatchEvent(mr);
  }
  selectedHandler() {
    const n = f;
    this.mouseEnabled == !![] && (this[n(328)] = !![], this.dispatchEvent(Ir));
  }
  unselectedHandler() {
    const n = f;
    this[n(328)] = ![], this.mouseEnabled == !![] && this.dispatchEvent(wr);
  }
  addChild(n) {
    const e = f;
    return So(this, n), this[e(212)] = !![], this;
  }
  setZIndex(n) {
    const e = f;
    this._zIndex = n, this.parent && this.parent.updateZIndex(), this[e(212)] = !![];
  }
  setzIndex(n) {
    return this.setZIndex(n);
  }
  [f(280)]() {
    this.children.sort(function(n, e) {
      return n.zIndex - e.zIndex;
    });
  }
  updatezIndex() {
    return this[f(280)]();
  }
  updateChildrenDeep(n = ![]) {
    const e = f;
    if (this.children.length > 0) {
      const t = this[e(296)];
      for (let x = 0; x < t.length; x++) {
        const s = t[x];
        s.deep = this.deep + 1, s.children[e(267)] > 0 && s.updateChildrenDeep(n);
      }
    }
  }
  getChildren() {
    return this.children;
  }
  hasChild(n) {
    const e = f;
    return this.children[e(297)](n) != -1;
  }
  hasChildren() {
    return this.children.length > 0;
  }
  removeFromParent() {
    const n = f;
    return this.parent && this[n(239)].removeChild(this), this;
  }
  [f(203)]() {
    const n = f;
    return this.parent && this[n(239)].removeChild(this), this;
  }
  addChilds(n) {
    const e = f;
    for (let t = 0; t < n[e(267)]; t++) {
      let x = n[t];
      x.parent = this, x.deep = this[e(211)] + 1, x.matrixDirty = !![], this[e(296)].push(x), x[e(286)]() && x[e(312)](!![]);
    }
    this.updateZIndex();
  }
  removeChild(n) {
    const e = f;
    n.parent = null;
    let t = this.children.indexOf(n);
    return t != -1 && z.removeAt(this.children, t), n[e(212)] = !![], this.matrixDirty = !![], this;
  }
  removeChilds(n) {
    const e = f;
    for (var t of n)
      this[e(244)](t);
    return this;
  }
  [f(206)]() {
    return this[f(296)].forEach(function(e) {
      e.removeFromParent();
    }), this.children.length = 0, this;
  }
  hideAllChild() {
    this.children.forEach(function(n) {
      n[X0(279)]();
    });
  }
  showAllChild() {
    this.children.forEach(function(n) {
      n.show();
    });
  }
  replaceChild(n, e) {
    const t = f, x = this[t(296)][t(297)](n);
    if (x == -1)
      throw new Error(t(283));
    this.children[x] = e, n[t(239)] = null, e.parent = this;
  }
  getChildrenAABB(n) {
    const e = f;
    let t = n ? Xt.flatten(this.children) : this.children, x = t.map((s) => s[e(260)].aabb);
    return j.unionRects(x);
  }
  getRoot() {
    const n = f;
    let e = this;
    for (; e.parent != null; )
      e = e[n(239)];
    return e;
  }
  [f(308)](n, e) {
    return this.screenToLocalXY(n, e);
  }
  screenToLocalXY(n, e) {
    return this.getStageTransform().invert().point({ x: n, y: e });
  }
  stageToLocalVec(n) {
    return this.screenToLocalVec(n);
  }
  screenToLocalVec(n) {
    return this.getStageTransform().invert().vec([], n);
  }
  toStageXY(n, e) {
    return this.toScreenXY(n, e);
  }
  toScreenXY(n, e) {
    return this[f(261)]().point({ x: n, y: e });
  }
  toLayerXY(n, e) {
    return this[f(210)](n, e);
  }
  toWorldXY(n, e) {
    return this[f(264)]().point({ x: n, y: e });
  }
  toObjectLocalXY(n, e, t) {
    let x = this.toStageXY(n, e);
    return t.stageToLocalXY(x.x, x.y);
  }
  addInLink(n) {
    if (this.inLinks == null && (this.inLinks = []), this.inLinks.push(n), this.hasListener("addInLink")) {
      let e = new Event("addInLink");
      e.link = n, this.dispatchEvent(e);
    }
  }
  [f(226)](n) {
    const e = f;
    if (this.outLinks[e(254)](n), this[e(207)](e(226))) {
      let t = new Event("addOutLink");
      t.link = n, this.dispatchEvent(t);
    }
  }
  [f(265)](n) {
    const e = f;
    if (z[e(203)](this[e(256)], n), this.hasListener(e(265))) {
      let t = new Event("removeInLink");
      t.link = n, this.dispatchEvent(t);
    }
  }
  [f(220)](n) {
    const e = f;
    if (this.outLinks != null && z.remove(this[e(309)], n), this[e(207)]("removeOutLink")) {
      let t = new Event("removeOutLink");
      t.link = n, this.dispatchEvent(t);
    }
  }
  getLinks() {
    const n = f;
    let e = [];
    return this[n(256)] && (e = e.concat(this.inLinks)), this.outLinks && (e = e.concat(this[n(309)])), e;
  }
  getOBB() {
    return this._obb;
  }
  updateMatrix() {
    const n = f;
    if (this.parent == null)
      return;
    let e = this._getTransformByDeep(Lx);
    this._worldTransform = e;
    let t = this[n(322)](), x = e.points(t), s = this._obb;
    if (s.localPoints = t, s.points = x, this.isLink) {
      let i = this;
      s.aabb = qt.toAABB(x, i._getTotalLineWidth());
    } else
      s.aabb = qt[n(268)](x);
    this.inLinks.forEach((i) => {
      i.matrixDirty = !![];
    }), this.outLinks.forEach((i) => {
      i.matrixDirty = !![];
    }), this.children[n(271)]((i) => {
      i.matrixDirty = !![];
    }), this[n(323)]();
  }
  _afterUpdateMatrix() {
  }
  _afterStyleComputed() {
  }
  [f(243)]() {
    return this.matrixDirty;
  }
  clearMatrixDirtyMark() {
    this.matrixDirty = ![];
  }
  getK(n, e) {
    let t = this.getPoint(e - 1e-6, n), x = this.getPoint(e + 1e-6, n), s = x.x - t.x, i = x.y - t.y;
    return Math.atan2(i, s);
  }
  upgradeLinks() {
    return this[f(221)]().map((t) => {
      t.upgradeParent();
    }).filter((t) => t != null);
  }
  [f(204)]() {
    const n = f;
    let e = this, t = e.parent;
    if (t != null && t.parent != null) {
      const x = e[n(260)][n(228)];
      return !t._obb.aabb[n(231)](x);
    }
    return ![];
  }
  getTopFrozenParent() {
    const n = f;
    let e = this[n(219)]();
    for (let t = 0; t < e[n(267)]; t++)
      if (e[t].frozen)
        return e[t];
    return null;
  }
  getAncestors() {
    const n = f;
    if (this.parent == null)
      return [];
    let e = this, t = [];
    for (; e[n(239)] != null; )
      t[n(254)](e.parent), e = e.parent;
    return t.reverse();
  }
  isAncestors(n) {
    if (this === n.parent)
      return !![];
    let e = n.getAncestors();
    return z.hasChild(e, this);
  }
  pickable() {
    return this.mouseEnabled;
  }
  toIdMap() {
    const n = f;
    let e = /* @__PURE__ */ new Map();
    return e.set(this.id, this), Xt.flatten(this[n(296)]).forEach((x) => {
      e.set(x.id, x);
    }), e;
  }
  destory() {
    const n = f;
    this.destroyed = !![], this.visible = ![], this.mouseEnabled = ![], this[n(256)].forEach((e) => {
      e[n(245)]();
    }), this[n(309)].forEach((e) => {
      e[n(273)]();
    }), this[n(256)] = void 0, this.outLinks = void 0, this.parent && this.parent.removeChild(this), this.name = void 0, this[n(302)] = void 0, this[n(252)] = void 0, this.children[n(267)] = 0, this.transform = void 0, this.positions = void 0, this._obb = void 0, this[n(218)] = void 0, this.userData = void 0;
  }
  static flatten(n, e, t) {
    const x = f;
    let s = [];
    if (t) {
      let i = [];
      for (let r = 0; r < n.length; r++) {
        let o = n[r];
        (e == null || e(o) == !![]) && (i[x(254)](o), s[x(254)](o));
      }
      for (let r = 0; r < i.length; r++) {
        let o = i[r];
        if (o.children && o[x(296)].length > 0) {
          let a = Xt[x(216)](o[x(296)], e, t);
          s = s.concat(a);
        }
      }
      return s;
    }
    for (let i = 0; i < n[x(267)]; i++) {
      let r = n[i];
      if ((e == null || e(r) == !![]) && (s[x(254)](r), r[x(296)] && r.children.length > 0)) {
        let o = Xt.flatten(r[x(296)], e);
        s = s.concat(o);
      }
    }
    return s;
  }
  static getNoChildrensObjects(n) {
    const e = f;
    let t = Xt.flatten(n);
    return t = Xt[e(216)](n, (x) => z.notContains(t, x.parent)), t;
  }
  static _anyMatrixOrStyleDirty(n) {
    const e = f;
    if (n.matrixDirty)
      return !![];
    let t = n.children;
    for (let x = 0; x < t.length; x++) {
      let s = t[x];
      if (s.matrixDirty || n.style[e(305)])
        return !![];
      if (Xt._anyMatrixOrStyleDirty(s))
        return !![];
    }
    return ![];
  }
  toJSON(n) {
    const e = f;
    let t = xr(this, this.serializers, this[e(247)]);
    if (n != null) {
      let x = n.objIndexMap, s = n.styleIndexMap;
      if (n.shapeIndexMap, n.resourcesIndexMap, x) {
        let i = s[e(291)](this.style);
        t.style = i;
      }
      if (x && this.parent != null) {
        let i = x[e(291)](this.parent);
        i != null && (t.parent = i);
      }
    }
    return t[e(310)] != null && (Object[e(208)](t.data).length == 0 ? delete t.data : t.data = JSON.parse(JSON.stringify(t.data))), t;
  }
  _afterFromJSON(n, e, t, x) {
    const s = f, i = this;
    if (ko(n, i), n[s(252)] != null) {
      let r = t[n.style];
      i[s(252)] = r;
    }
    if (n[s(232)] != null) {
      let r = e[n[s(232)]];
      if (r) {
        let o = r.src;
        i.imageSrc = o;
      }
    }
    if (n.shape != null) {
      let r = x[n.shape];
      i.setShape(r);
    }
  }
  set [f(258)](n) {
    this._zIndex = n, this.setZIndex(n);
  }
  get zIndex() {
    return this._zIndex;
  }
  get x() {
    return this._x;
  }
  set x(n) {
    this._x !== n && (this.matrixDirty = !![]), this._x = n;
  }
  get y() {
    return this._y;
  }
  set y(n) {
    this._y !== n && (this.matrixDirty = !![]), this._y = n;
  }
  get [f(327)]() {
    return this._width;
  }
  set width(n) {
    this.width !== n && (this.matrixDirty = !![]), this._width = n;
  }
  get [f(234)]() {
    return this[f(311)];
  }
  set height(n) {
    const e = f;
    this._height !== n && (this[e(212)] = !![]), this[e(311)] = n;
  }
  get rotation() {
    return this._rotation;
  }
  set [f(237)](n) {
    const e = f;
    this._rotation !== n && (this.matrixDirty = !![]), this[e(289)] = n;
  }
  get scaleX() {
    return this._scaleX;
  }
  set scaleX(n) {
    this._scaleX !== n && (this.matrixDirty = !![]), this._scaleX = n;
  }
  get scaleY() {
    return this._scaleY;
  }
  set [f(238)](n) {
    const e = f;
    this[e(292)] !== n && (this[e(212)] = !![]), this[e(292)] = n;
  }
  get skewX() {
    return this._skewX;
  }
  set skewX(n) {
    const e = f;
    this._skewX !== n && (this.matrixDirty = !![]), this[e(222)] = n;
  }
  get skewY() {
    return this._skewY;
  }
  set skewY(n) {
    const e = f;
    this._skewY !== n && (this[e(212)] = !![]), this[e(314)] = n;
  }
  get left() {
    return this.x - this.width * 0.5;
  }
  set [f(321)](n) {
    this.x = n + this.width * 0.5;
  }
  get right() {
    return this.x + this.width * 0.5;
  }
  set [f(241)](n) {
    this.x = n - this.width * 0.5;
  }
  get top() {
    const n = f;
    return this.y - this[n(234)] * 0.5;
  }
  set top(n) {
    this.y = n + this.height * 0.5;
  }
  get bottom() {
    const n = f;
    return this.y + this[n(234)] * 0.5;
  }
  set bottom(n) {
    this.y = n - this.height * 0.5;
  }
};
let C = Xt;
N([u("DisplayObject")], C.prototype, f(288), 2), N([u(0)], C.prototype, "_x", 2), N([u(0)], C.prototype, "_y", 2), N([u(1)], C.prototype, "_width", 2), N([u(1)], C[f(300)], "_height", 2), N([u(0)], C.prototype, "_rotation", 2), N([u(1)], C.prototype, "_scaleX", 2), N([u(1)], C.prototype, "_scaleY", 2), N([u(0)], C.prototype, "_skewX", 2), N([u(0)], C.prototype, "_skewY", 2), N([u("rect")], C[f(300)], f(257), 2), N([u(!![])], C[f(300)], "_cameraVisible", 2), N([u(null)], C.prototype, "paintSelected", 2), N([u(![])], C.prototype, "painted", 2), N([u(![])], C.prototype, "isPointOn", 2), N([u(![])], C.prototype, "_isMouseInAABB", 2), N([u(!![])], C[f(300)], "_needPaint", 2), N([u(5)], C[f(300)], "_pickRadius", 2), N([u(![])], C.prototype, "destroyed", 2), N([u(["id", f(290), f(215), "zIndex", "frozen", "editable", f(298), "mouseEnabled", "connectable", "showSelected", "draggable", "visible", "origin", "classList", "dropAllowed", "data"])], C[f(300)], "serializers", 2), N([u(["className"])], C[f(300)], "allwaysSerializers", 2), N([u(0)], C.prototype, "_zIndex", 2), N([u(![])], C.prototype, "frozen", 2), N([u(0)], C[f(300)], "deep", 2), N([u(!![])], C.prototype, "_visible", 2), N([u(!![])], C.prototype, f(229), 2), N([u(!![])], C.prototype, "serializeable", 2), N([u(!![])], C.prototype, "connectable", 2), N([u(!![])], C.prototype, "mouseEnabled", 2), N([u(!![])], C.prototype, f(246), 2), N([u(![])], C.prototype, "isSelected", 2), N([u(!![])], C[f(300)], "editable", 2), N([u(![])], C.prototype, "dropAllowed", 2);
function ko(n, e) {
  const t = f;
  let x = e.serializers, s = Object.getPrototypeOf(e);
  return x[t(271)]((i) => {
    const r = t;
    if (n[r(307)](i)) {
      let o = Object.getOwnPropertyDescriptor(e, i);
      if (o == null && (o = Object.getOwnPropertyDescriptor(s, i)), o != null && o[r(233)] == ![])
        return;
      let a = n[i];
      a != null && a.className != null && (a = hx(a[r(288)], a)), e[i] = a;
    } else
      s.hasOwnProperty(i) && (e[i] = s[i]);
  }), e.id == null && (e.id = It[t(282)]()), e;
}
function sn() {
  const n = ["remove", "isOutOfParent", "transform", "removeAllChild", "hasListener", "keys", "添加自己为子节点了2", "toWorldXY", "deep", "matrixDirty", "dragoverHandler", "getOwnPropertyDescriptor", "type", "flatten", "css", "origin", "getAncestors", "removeOutLink", "getLinks", "_skewX", "156472VDEphB", "render", "重复添加", "addOutLink", "207661ckLIuK", "aabb", "showSelected", "match", "isIntersectRect", "image", "writable", "height", "isMouseInPath", "_findChildren", "rotation", "scaleY", "parent", 'addClass(styleName) error: styleName must be startWith "."', "right", "isPointOn", "_isMatrixDirty", "removeChild", "unlinkEnd", "draggable", "allwaysSerializers", "被添加的子节点已经存在父节点了", "updatezIndex", "689465CACkcT", "string", "style", "dragoutHandler", "push", "_doTransform", "inLinks", "pickType", "zIndex", "_afterUpdate", "_obb", "getStageTransform", "isOverviewOrExport", "dispatchEvent", "getWorldTransform", "removeInLink", "removeUserData", "length", "toAABB", "_getTransformByDeep", "135252dJWErv", "forEach", "drag", "unlinkBegin", "transformPoint", "substring", "dontNeedPickup", "206969jRuPqX", "getComputedStyle", "hide", "updateZIndex", "30DIvsfx", "next", "replace child not found", "_visible", "show", "hasChildren", "mousePickupPath", "className", "_rotation", "name", "get", "_scaleY", "log", "classList", "6170184hICrkq", "children", "indexOf", "selectedStyle", "addClass", "prototype", "startsWith", "listeners", "positions", "mouseEnabled", "dirty", "copy", "hasOwnProperty", "stageToLocalXY", "outLinks", "data", "_height", "updateChildrenDeep", "deep is required.", "_skewY", "2KDrAdi", "13134YPRNPy", "visible", "_computedStyle", "mousedownHandler", "getTransform", "left", "_OBBPoints", "_afterUpdateMatrix", "userData", "touchendHandler", "map", "width", "isSelected"];
  return sn = function() {
    return n;
  }, sn();
}
function So(n, e) {
  const t = f;
  if (e[t(239)] != null)
    throw console[t(293)](e), new Error(t(248));
  if (n === e)
    throw console.log(n), new Error(t(209));
  if (z.hasChild(n[t(219)](), e) && (console.log("互为子节点了"), console[t(293)](n, e)), n.parent === e && (console.log("互为子节点了2"), console[t(293)](n, e)), e[t(239)] = n, e[t(211)] = n.deep + 1, n.children[t(297)](e) != -1)
    throw console.log(n, e), new Error(t(225));
  return n.children.push(e), e.children[t(267)] > 0 && e.updateChildrenDeep(!![]), n[t(249)](), n;
}
(function(n, e) {
  for (var t = rn, x = n(); []; )
    try {
      var s = parseInt(t(413)) / 1 + -parseInt(t(411)) / 2 + parseInt(t(406)) / 3 + -parseInt(t(405)) / 4 + parseInt(t(410)) / 5 * (-parseInt(t(414)) / 6) + -parseInt(t(408)) / 7 * (-parseInt(t(409)) / 8) + parseInt(t(407)) / 9 * (parseInt(t(415)) / 10);
      if (s === e)
        break;
      x.push(x.shift());
    } catch {
      x.push(x.shift());
    }
})(on, 327910);
function rn(n, e) {
  var t = on();
  return rn = function(x, s) {
    x = x - 403;
    var i = t[x];
    return i;
  }, rn(n, e);
}
function on() {
  var n = ["42717xlCFVk", "2371920hEkAOq", "2589830Tefkfv", "rgba(0,255,0, 0.9)", "bottom", "lineDashScale", "2211968QFRkHJ", "1343874qYBILt", "27nMayIE", "233863kVebPW", "32xGpMsT", "5cxHQfF", "250076drSDKR", "right"];
  return on = function() {
    return n;
  }, on();
}
class Po {
  constructor() {
    var e = rn;
    this.visible = ![], this[e(404)] = 1, this.styleX = new lt({ strokeStyle: "rgba(255,0,0,0.3)", fillStyle: "rgba(255,0,0,0.9)", textAlign: e(412), textBaseline: "top", lineWidth: 1 }), this.styleY = new lt({ strokeStyle: "rgba(0,255,0, 0.4)", fillStyle: e(416), textBaseline: e(403), lineWidth: 1 });
  }
  show() {
    this.visible = !![];
  }
  hide() {
    this.visible = ![];
  }
}
const qs = an;
(function(n, e) {
  const t = an, x = n();
  for (; []; )
    try {
      if (parseInt(t(140)) / 1 + -parseInt(t(136)) / 2 + parseInt(t(142)) / 3 + parseInt(t(135)) / 4 * (-parseInt(t(133)) / 5) + -parseInt(t(137)) / 6 + parseInt(t(141)) / 7 * (parseInt(t(132)) / 8) + parseInt(t(139)) / 9 === e)
        break;
      x.push(x.shift());
    } catch {
      x.push(x.shift());
    }
})(cn, 623517);
let le = { isDebug: localStorage[qs(134)](qs(138)) == "true", showFPS: ![], paintAABB: ![], debugInfo: null, debugMode: function() {
  const n = qs;
  let e = localStorage[n(134)](n(138)) == "true", t = !e;
  localStorage.setItem("_jtopo_debug_mode", "" + t), le.isDebug = t;
} };
function an(n, e) {
  const t = cn();
  return an = function(x, s) {
    return x = x - 132, t[x];
  }, an(n, e);
}
function cn() {
  const n = ["_jtopo_debug_mode", "11236626JHTCgE", "188655TxetfU", "406huCBZA", "1612947nEwXJT", "36760agMDpu", "1771955tQmEfV", "getItem", "4MVJZxO", "1675698GgdhFa", "2553426IxQKnF"];
  return cn = function() {
    return n;
  }, cn();
}
(function(n, e) {
  for (var t = ci, x = n(); []; )
    try {
      var s = -parseInt(t(238)) / 1 * (parseInt(t(231)) / 2) + -parseInt(t(232)) / 3 * (-parseInt(t(236)) / 4) + -parseInt(t(233)) / 5 * (-parseInt(t(230)) / 6) + parseInt(t(229)) / 7 + parseInt(t(237)) / 8 + -parseInt(t(234)) / 9 * (-parseInt(t(239)) / 10) + -parseInt(t(235)) / 11 * (parseInt(t(240)) / 12);
      if (s === e)
        break;
      x.push(x.shift());
    } catch {
      x.push(x.shift());
    }
})(ln, 864525);
function ci(n, e) {
  var t = ln();
  return ci = function(x, s) {
    x = x - 229;
    var i = t[x];
    return i;
  }, ci(n, e);
}
class Hs {
  constructor(e) {
    this.length = 0, this.x = e.x, this.y = e.y;
  }
}
function ln() {
  var n = ["4vhyGWf", "1155136uQWwKX", "6868ReAFwM", "2050KInWHS", "11760624GnEmHx", "10176523JnAgNF", "350706WhdrlF", "80aCyUgt", "1053111SARXtT", "55gezaJQ", "22266aTLEkh", "22WjZPdE"];
  return ln = function() {
    return n;
  }, ln();
}
(function(n, e) {
  const t = ht, x = n();
  for (; []; )
    try {
      if (-parseInt(t(296)) / 1 * (parseInt(t(290)) / 2) + parseInt(t(304)) / 3 + -parseInt(t(293)) / 4 * (-parseInt(t(287)) / 5) + parseInt(t(297)) / 6 * (parseInt(t(302)) / 7) + -parseInt(t(310)) / 8 * (parseInt(t(292)) / 9) + parseInt(t(286)) / 10 + parseInt(t(284)) / 11 * (parseInt(t(294)) / 12) === e)
        break;
      x.push(x.shift());
    } catch {
      x.push(x.shift());
    }
})(un, 896299);
function ht(n, e) {
  const t = un();
  return ht = function(x, s) {
    return x = x - 281, t[x];
  }, ht(n, e);
}
function Oo(n, e, t, x) {
  const s = ht, i = n.x, r = e.x, o = n.y, a = e.y, c = [r - i, a - o];
  B.normalize(c, c);
  const l = [-c[1] * x, c[0] * x], h = T[s(318)](n, l, t), d = T.createPointsBidirectional(e, l, t);
  return [h, d];
}
function Co(n, e, t) {
  const x = ht, s = n.x, i = e.x, r = n.y, o = e.y, a = [i - s, o - r];
  B.normalize(a, a);
  const c = [-a[1] * t, a[0] * t], l = T[x(318)](n, c, 1), h = T[x(318)](e, c, 1);
  return [l[0], h[0]];
}
function Eo(n, e, t) {
  const x = ht, s = [n.x - e.x, n.y - e.y], i = [t.x - e.x, t.y - e.y], r = B.normalize([], i), o = B.dot(s, r), a = B.multiplyC([], r, o);
  return a[x(295)] = o, a;
}
function Lo(n, e, t) {
  const x = ht, s = Eo(n, e, t), i = [t.x - e.x, t.y - e.y], r = B[x(306)](i), o = s.projectionLen / r, a = new Hs();
  return a.x = e.x + s[0], a.y = e.y + s[1], a[x(283)] = r, a.projectionLen = s[x(295)], a[x(282)] = o, a;
}
function To(n, e, t) {
  const x = ht, s = [n.x - e.x, n.y - e.y], i = [t.x - e.x, t.y - e.y], r = B.normalize([], i), o = B[x(306)](i);
  let a;
  const c = B.dot(s, r);
  if (c > o)
    a = t;
  else if (c < 0)
    a = e;
  else {
    let h = B.multiplyC([], r, c);
    a = { x: e.x + h[0], y: e.y + h[1] };
  }
  let l = new Hs(a);
  return l.segLen = o, l.projectionLen = c, l[x(282)] = c / o, l;
}
function vi(n, e) {
  const t = ht;
  if (e.length < 2)
    throw new Error(t(299));
  let x = new Hs(e[0]), s = Number.MAX_SAFE_INTEGER;
  for (let i = 0; i < e.length - 1; i++) {
    const r = e[i], o = e[i + 1], a = To(n, r, o), c = T.distancePoint(a, n);
    c < s && (x = a, x[t(319)] = [r, o], x.dist = c, x[t(312)] = i, s = c);
  }
  return x;
}
function hn(n, e, t, x, s = ![]) {
  const i = [e.x - n.x, e.y - n.y], r = [x.x - t.x, x.y - t.y], o = B.normalize([], [-i[1], i[0]]), a = B.normalize([], [-r[1], r[0]]), c = o[0], l = o[1], h = a[0], d = a[1], p = c * d - h * l;
  if (p == 0)
    return null;
  const b = B.dot(o, [n.x, n.y]), _ = B.dot(a, [t.x, t.y]), I = { x: (d * b - l * _) / p, y: (c * _ - h * b) / p };
  return s == ![] && (!Ai(I, n, e) || !Ai(I, t, x)) ? null : I;
}
function un() {
  const n = ["error segIndex:", "rate", "segLen", "11SzDUti", "isNode", "258600dENKDy", "3791715dtCNKj", "length", "end", "461204yDqOlm", "dist", "2457JeXeoE", "4xFSIFu", "5184588mkPObe", "projectionLen", "3kzsVXZ", "302070iYoSeK", "points", "number of points is less than 2", "stageToLocalXY", "log", "77czAnhf", "getOBB", "831732gTVkjB", "abs", "len", "positionToLocalPoint", "push", "begin", "13456PwgeZI", "distance", "segIndex", "getStageTransform", "MAX_SAFE_INTEGER", "distancePoint", "toFixed", "point", "createPointsBidirectional", "seg"];
  return un = function() {
    return n;
  }, un();
}
function vr(n, e, t, x = ![]) {
  if (t.length < 2)
    throw new Error("lenght of points less than 2");
  let s = [];
  for (var i = 0; i < t.length - 1; i++) {
    const r = t[i], o = t[i + 1];
    let a = hn(n, e, r, o, x);
    a != null && s.push(a);
  }
  return s = Mo(s), s;
}
function Ai(n, e, t) {
  let x = [t.x - e.x, t.y - e.y], s = B.len(x), i = { x: (e.x + t.x) / 2, y: (e.y + t.y) / 2 }, r = [n.x - i.x, n.y - i.y];
  return B.len(r) <= s * 0.5 + 1e-8;
}
function Mo(n) {
  const e = ht;
  let t = {}, x = [];
  for (var s = 0; s < n.length; s++) {
    let i = n[s], r = i.x.toFixed(6) + "-" + i.y[e(316)](6);
    t[r] == null && (x.push(i), t[r] = i);
  }
  return x;
}
function Do(n, e, t, x) {
  const s = ht;
  let i = Number[s(314)], r = null, o = n.getTransform();
  for (var a = 0; a < t[s(288)]; a++) {
    const c = t[a], l = o[s(298)](c._obb.points);
    c.isNode && l[s(308)](l[0]);
    let h = vi(e, l);
    h.dist < i && h[s(291)] < x && (i = h[s(291)], h.object = c, r = h);
  }
  return r;
}
function Ao(n, e, t) {
  const x = ht;
  let s = [];
  for (let i = 0; i < e.length; i++) {
    const r = e[i], o = r[x(313)]();
    let a = r.getAnchorPoints();
    a == null && console[x(301)](r);
    for (let c = 0; c < a[x(288)]; c++) {
      let l = a[c], h = r[x(307)](l), d = o[x(317)](h), p = T[x(315)](d, n);
      if (p < t) {
        const b = { distance: p, object: r, anchorName: l };
        s.push(b);
      }
    }
  }
  return s.sort((i, r) => i.distance - r[x(311)]), s;
}
function Bo(n, e) {
  const t = ht;
  let x = n.segIndex, s = n.rate, i = n.object, r = s >= 0.25 && s <= 0.75, o = s - 0.5, a = Math.abs(n.segLen * o);
  if (i.isNode) {
    if (a > e || !r)
      return null;
    if (x == 0)
      return P.ct;
    if (x == 1)
      return P.rm;
    if (x == 2)
      return P.cb;
    if (x == 3)
      return P.lm;
    throw new Error(t(281) + x);
  } else if (i.isLink) {
    let c = i[t(300)](n.x, n.y);
    return T.distancePoint(c, i.getBeginPoint()) <= e ? P[t(309)] : T.distancePoint(c, i.getEndPoint()) <= e ? P[t(289)] : null;
  } else
    throw new Error("unkwnow object!");
}
function kx(n) {
  return Math[ht(305)](Math.abs(n) % Math.PI) < 0.5;
}
function li(n, e, t) {
  return n < e ? e : n > t ? t : n;
}
const y = U0;
(function(n, e) {
  const t = U0, x = n();
  for (; []; )
    try {
      if (parseInt(t(454)) / 1 + -parseInt(t(483)) / 2 + parseInt(t(461)) / 3 * (-parseInt(t(451)) / 4) + -parseInt(t(489)) / 5 + -parseInt(t(456)) / 6 + parseInt(t(547)) / 7 + parseInt(t(551)) / 8 === e)
        break;
      x.push(x.shift());
    } catch {
      x.push(x.shift());
    }
})(dn, 966897);
var No = Object[y(491)], jo = Object.getOwnPropertyDescriptor, X = (n, e, t, x) => {
  for (var s = x > 1 ? void 0 : x ? jo(e, t) : e, i = n.length - 1, r; i >= 0; i--)
    (r = n[i]) && (s = (x ? r(e, t, s) : r(s)) || s);
  return x && s && No(e, t, s), s;
};
function dn() {
  const n = ["rotateCenter", "scaleY", "imageSrc", "_zIndex", "no-repeat", "getPoint", "shapeSize", "_pickRadius", "IMG", "isUnit", "zoomOut", "serializers", "parent", "alignOriginToLink", "endsWith", "_textLineHeight", "_calcTextSize", "updateMatrix", "_computedStyle", "8299550SmaUMd", "rotateWithParent", "scaleX", "allwaysSerializers", "5773808HbWqbF", "matrixDirty", "save", "originOffset", "image", "borderWidth", "准备删除的方法", "split", "getLinkChildren", "textOffsetX", "resizeTo", "next", "_shapePoints", "textPosition", "left", "borderRadius", "originAutoRotate", "_textPosition", "positions", "anchorPoints", "textBaseline", "getLocalPoint", "fillText", "push", "_textArr", "textOffsetY", "setImage", "style", "1276244TckGIB", "_OBBPoints", "_afterUpdate", "1256865URyaaW", "width", "3754818JuagHM", "hasBorder", "_drawBackgroundOrBorder", "black", "mousePickupPath", "3VhWHuT", "lineWidth", "strokeStyle", "_width", "_image", "nearest", "obbPoints", "fillStyle", "roundRect", "rotate", "_doTransform", "_textHeight", "getPositionNormal", "setRotateCenter", "setXYOnLink", "imageSmoothingEnabled", "positionToLocalPoint", "zoom", "dirty", "onlyImage", "scale", "end", "1908954ktnKoT", "_getOriginRotation", "toJSON", "closePath", "skew", "_text", "1490015wpttfU", "src", "defineProperty", "translateWith", "indexOf", "getCtrlPoints", "originAlignPosition", "height", "_imageSrc", "translate", "destory", "getImage", "restore", "text", "drawShape", "rotation", "_calc_originInParent", "position not exist:", "stroke", "prototype", "rotateTo", "_textDirty", "clip", "min", "get", "rect", "length", "hasImage", "skewX", "shape", "setXY", "outLinks", "className", "isNode", "_drawContentDesc", "ctrlPoints", "toLowerCase", "_calcTextPosition", "origin"];
  return dn = function() {
    return n;
  }, dn();
}
const kr = class extends C {
  constructor(n, e = 0, t = 0, x = 1, s = 1) {
    const i = y;
    super(), this._drawContentDesc = { hasBorder: ![], hasBackgroundColor: ![], hasBackgroundImage: ![], hasShape: ![], hasImage: ![], onlyImage: ![], onlyText: ![], shapeSize: { width: 1, height: 1 } }, this[i(467)] = [{ x: 0, y: 0 }, { x: 0, y: 0 }, { x: 0, y: 0 }, { x: 0, y: 0 }], this._originInParent = { x: 0, y: 0 }, n != null && (this[i(502)] = n, this._textDirty = !![]), this._x = e || 0, this._y = t || 0, this[i(464)] = x || 0, this._height = s || 0;
  }
  get originAutoRotate() {
    return this.rotateWithParent;
  }
  set originAutoRotate(n) {
    this.rotateWithParent = n;
  }
  get [y(502)]() {
    return this._text;
  }
  set text(n) {
    this.setText(n);
  }
  get [y(555)]() {
    return this._image;
  }
  set image(n) {
    this.setImage(n);
  }
  get imageSrc() {
    return this._imageSrc;
  }
  set imageSrc(n) {
    n == "canvas" && (n = null), this.setImage(n), this._imageSrc = n;
  }
  setOrigin(n, e) {
    const t = y;
    return this[t(527)][0] = n, this[t(527)][1] = e, this.matrixDirty = !![], this;
  }
  setXYOnLink(n, e) {
    const t = y;
    return this[t(527)][0] = n, this[t(527)][1] = e, this.matrixDirty = !![], this;
  }
  setShape(n) {
    this.shape = n, this.matrixDirty = !![];
  }
  [y(541)](n, e, t, x) {
    const s = y;
    x != null && (this[s(554)] = x), this[s(495)] = n, this[s(474)](n), e != null && this.setXYOnLink(e, this.origin[1]), t != null && this[s(475)](this.origin[0], t), this.matrixDirty = !![];
  }
  alignOriginToNode(n, e = "center") {
    const t = y;
    let x = ae[e];
    this.setOrigin(x.x, x.y), this.originAlignPosition = n, this[t(552)] = !![];
  }
  _OBBPoints() {
    const n = y;
    let e = this.width * 0.5, t = this[n(496)] * 0.5, x = -e, s = -t;
    return [{ x, y: s }, { x: e, y: s }, { x: e, y: t }, { x, y: t }];
  }
  _afterStyleComputed() {
    const n = y, e = this._computedStyle, t = this._drawContentDesc;
    t.hasBackgroundColor = e.backgroundColor != null, t.hasBorder = e.borderWidth > 0, t.hasBackgroundImage = e._backgroundImageObject != null, t[n(516)] = this[n(465)] != null, t.hasShape = e.lineWidth > 0 && e.strokeStyle != null || e.fillStyle != null, t.onlyImage = (this._image || t.hasBackgroundImage) && !t[n(457)] && !t.hasShape && !t.hasBackgroundColor, t.onlyText = this._text != null && !t.hasImage && !t.hasBackgroundImage && !t[n(457)] && !t.hasShape && !t.hasBackgroundColor;
  }
  _afterUpdateMatrix() {
    this._updateShapeSize();
  }
  [y(453)]() {
    const n = y;
    (this._isMatrixDirty() || this._textDirty || this._computedStyle._textDirty) && (this._updateText(), this._textDirty && (this[n(510)] = ![], this.updateMatrix()), this[n(510)] = ![], this._computedStyle._textDirty = ![]);
  }
  [y(505)]() {
    const n = y, e = this.parent;
    if (e.isLink)
      return this._calcOriginInParentLink();
    let t = this.originAlignPosition;
    if (this[n(527)][0] == 0 && this.origin[1] == 0 && t == null)
      return this.origin;
    let s = [this[n(527)][0] * e[n(455)], this[n(527)][1] * e[n(496)]];
    if (t != null) {
      let i = this.positionToLocalPoint(t);
      s[0] -= i.x, s[1] -= i.y;
    }
    return s;
  }
  _calcOriginInParentLink() {
    const n = y, e = this.parent, t = this;
    if (this === e.beginArrow || t === e.endArrow)
      return [0, 0];
    let x = t.origin[0], s = t.origin[1], i = e[n(533)](s, x);
    if (t.originOffset) {
      let o = this._getOriginRotation();
      i = { x: i.x + t.originOffset * Math.cos(o), y: i.y + t[n(554)] * Math.sin(o) };
    }
    let r = t[n(495)];
    if (r != null) {
      let o = t[n(477)](r);
      i.x -= o.x, i.y -= o.y;
    }
    return [i.x, i.y];
  }
  _getOriginRotation() {
    const n = y, e = this.parent;
    if (e == null || e.isLayer || e.isNode || !this[n(548)])
      return 0;
    let t = e;
    if (this === t.beginArrow || this === t.endArrow)
      return 0;
    let x = this[n(527)][0], s = this.origin[1];
    return e.getK(x, s);
  }
  [y(471)](n) {
    const e = y, t = this;
    if (t.isNode && t[e(540)] == null)
      return;
    if (t.isLink)
      throw new Error("link no transform");
    let x = t._calc_originInParent(), s = x[0] + t.x, i = x[1] + t.y;
    n.translate(s, i), (t.skewX != 0 || t.skewY != 0) && n.transform(1, t[e(517)], t.skewY, 1, 0, 0), (t.scaleX !== 1 || t[e(529)] !== 1) && n[e(481)](t[e(549)], t.scaleY);
    let r = t[e(484)]() + t.rotation;
    if (r != 0)
      if (t.rotateCenter == "center")
        n.rotate(r);
      else {
        let o = t[e(477)](t.rotateCenter);
        n.translate(o.x, o.y), n[e(470)](r), n[e(498)](-o.x, -o.y);
      }
  }
  _updateShapeSize() {
    const n = y, e = this[n(546)];
    let t = e.borderWidth || 0, x = e[n(462)] || 0, s = e.padding || 0;
    const i = this.width - t * 2 - x - s * 2, r = this.height - t * 2 - x - s * 2;
    this._drawContentDesc.shapeSize[n(455)] = i, this._drawContentDesc[n(534)].height = r;
  }
  getSegmentPoints() {
    const n = y, e = this[n(452)]();
    return this[n(518)].isClosed && e.push(e[0]), e;
  }
  [y(500)](n) {
    const e = this;
    return new Promise((t, x) => {
      const s = U0;
      if (e._image != null) {
        n ? n(e._image) : t(e[s(465)]);
        return;
      }
      let i = rt.objCache.get(e);
      if (i == null) {
        n ? n(null) : x(null);
        return;
      }
      n == null && (n = function() {
        t(e[s(465)]);
      }), i[s(562)] = n;
    });
  }
  [y(449)](n, e = ![]) {
    const t = y;
    let x = this, s = n;
    return rt.cancelCallback(this), s == null || s == "" ? (this[t(497)] = null, this[t(465)] = null, x.style.dirty = !![], this) : s.tagName == t(536) ? (this[t(497)] = s.getAttribute(t(490)), x[t(465)] = s, e == !![] && x[t(561)](s.width, s.height), x.style.dirty = !![], this) : s.tagName == "CANVAS" ? (this[t(497)] = "canvas", this[t(465)] = s, e == !![] && this.resizeTo(s[t(455)], s.height), x[t(450)].dirty = !![], this) : (rt.loadImageWithObj(this, s, function(i) {
      const r = t;
      i != null && (x._image = i, x._imageSrc = i.getAttribute("src"), e == !![] && x[r(561)](i.width, i.height), x.style[r(479)] = !![]);
    }), this);
  }
  setText(n) {
    const e = y;
    if (n != this[e(488)] && (this[e(510)] = !![], this[e(552)] = !![]), n == null) {
      this[e(488)] = n, this[e(447)] = null;
      return;
    }
    if (typeof n == "number" && (n = "" + n), n[e(493)](`
`) != -1) {
      let t = n[e(558)](`
`);
      this[e(447)] = t;
    } else
      this._textArr = null;
    this._text = n;
  }
  [y(544)]() {
    const n = y;
    let e = this[n(447)] == null ? 1 : this[n(447)][n(515)], t;
    e == 1 ? t = lt.measureText(this[n(488)], this._computedStyle, e) : t = lt.measureText(this[n(447)], this._computedStyle, e), this._textWidth = t.width, this[n(472)] = t[n(496)], this[n(543)] = t.lineHeight;
  }
  attr(n) {
    const e = y;
    throw new Error(e(557));
  }
  resizeToFitImage() {
    const n = y;
    this[n(465)] != null && this[n(465)][n(455)] != null && this.resizeTo(this[n(465)][n(455)], this._image.height);
  }
  [y(503)](n) {
    const e = y;
    if (this.shape[e(537)]) {
      let t = this._drawContentDesc[e(534)];
      n.scale(t.width, t[e(496)]), this.shape.draw(n, this), n.scale(1 / t.width, 1 / t.height);
    } else
      this.shape.draw(n, this);
  }
  [y(458)](n) {
    const e = y, t = this[e(546)], x = this._drawContentDesc;
    let s = t[e(556)] || 0, i = -this.width * 0.5 + s * 0.5, r = -this[e(496)] * 0.5 + s * 0.5, o = this.width - s, a = this.height - s, c = t[e(566)] || 0;
    n.beginPath(), c == 0 ? n.rect(i, r, o, a) : n[e(469)](i, r, o, a, c), x.hasBackgroundColor && (n.fillStyle = t.backgroundColor, n.fill()), x[e(457)] && (n.lineWidth = s, n[e(463)] = t.borderColor || e(459), (t.borderStyle == "dashed" || t.borderStyle == "dotted") && n.setLineDash([1, 1]), n.stroke());
  }
  _drawImage(n, e, t, x, s) {
    const i = y;
    if (this[i(497)] != null && this._imageSrc[i(525)]()[i(542)]("svg")) {
      n.drawImage(e, -this.width * 0.5, -this.height * 0.5, this.width, this.height);
      return;
    }
    const r = this._computedStyle, o = Math[i(512)](this.width, this[i(455)] - s - s), a = Math.min(this[i(496)], this.height - s - s), c = r._getBackgroundRect(o, a, this);
    let l = -this.width * 0.5, h = -this.height * 0.5, d = l + c.x, p = h + c.y;
    const b = Math[i(512)](o, c.width), _ = Math.min(a, c.height);
    let I = e.width, g = e.height;
    const k = i(532);
    if (k == i(532)) {
      n.imageSmoothingEnabled = r[i(476)] == null ? !![] : r.imageSmoothingEnabled, n.drawImage(e, 0, 0, I, g, d, p, b, _);
      return;
    }
    let S = n.createPattern(e, k);
    n.fillStyle = S;
    let E = d % I, A = p % g;
    k == "repeat-x" ? A = 0 : k == "repeat-y" && (E = 0), n.translate(E, A), n.fillRect(l - I, h - g, o + I + I, a + g + g), n[i(498)](-E, -A);
  }
  _strokeAndFill(n) {
    const e = y;
    let t = this._computedStyle, x = this[e(523)];
    n.save(), (x.hasBorder || x.hasBackgroundColor) && (this._drawBackgroundOrBorder(n), this.mousePickupPath(n)), x.hasShape && (n.beginPath(), this.drawShape(n), t.fillStyle != null && (n[e(468)] = t[e(468)], n.fill()), t[e(462)] > 0 && t.strokeStyle != null && (n.lineWidth = t[e(462)], n.strokeStyle = t.strokeStyle, n[e(507)]()), this.isPointOn == ![] && this.pickType == "shape" && (this.shape.isClosed ? this[e(460)](n) : this.mousePickupStroke(n, this[e(535)])));
    const s = this[e(465)];
    if (s) {
      x.hasShape && n[e(511)]();
      let i = t.borderWidth || 0;
      this._drawImage(n, s, x[e(457)], x.hasBackgroundColor, i);
    }
    n.restore();
  }
  draw(n) {
    const e = y;
    if (this[e(455)] <= 0 || this.height <= 0)
      return;
    let t = this._drawContentDesc;
    if (this._strokeAndFill(n), t[e(480)] || t.onlyText || t.hasShape && this.isPointOn == ![] && this.pickType == e(514)) {
      let x = -this.width * 0.5, s = -this.height * 0.5;
      n[e(553)](), n.beginPath(), n.rect(x, s, this.width, this[e(496)]), n[e(486)](), this[e(460)](n), n[e(501)]();
    }
    this._paintText(n);
  }
  _updateText() {
    const n = y;
    this._calcTextSize(), this[n(526)]();
  }
  [y(526)](n = 0, e = 0) {
    const t = y;
    let x = this[t(546)], s = null;
    x[t(564)] != null ? s = this.positionToLocalPoint(x.textPosition) : s = { x: 0, y: this.height * 0.5 };
    let i = 0, r = -(this[t(472)] - this._textLineHeight) * 0.5;
    return x.textAlign == t(565) ? i = n + e : x.textAlign == "right" && (i = -(n + e)), x.textBaseline == "top" ? r = n + e : x[t(443)] == "bottom" && (r = -(n + e) - this[t(472)] + this._textLineHeight), s.x += i, s.y += r, x[t(560)] != null && (s.x += x.textOffsetX), x[t(448)] != null && (s.y += x.textOffsetY), this._textPosition = s, s;
  }
  _paintText(n) {
    const e = y;
    let t = this._text;
    if (t == null)
      return null;
    let x = this[e(546)], s = this[e(568)] || { x: 0, y: 0 }, i = this._textArr;
    if (n[e(468)] = x.color || "black", this.textRotation == 0)
      if (i == null)
        n.fillText(t, s.x, s.y);
      else {
        let o = this._textLineHeight;
        for (var r = 0; r < i.length; r++)
          n[e(445)](i[r], s.x, s.y + r * o);
      }
    else {
      if (n[e(498)](s.x, s.y), n[e(470)](this.textRotation), i == null)
        n.fillText(t, 0, 0);
      else {
        let o = this[e(543)];
        for (var r = 0; r < i[e(515)]; r++)
          n.fillText(i[r], 0, 0 + r * o);
      }
      n[e(470)](-this.text), n[e(498)](-s.x, -s.y);
    }
    return s;
  }
  getLinkChildren(n) {
    const e = y;
    let t = [], x = this.outLinks;
    for (var s = 0; s < x[e(515)]; s++) {
      let i = x[s], r = i[e(482)].target;
      !z.hasChild(t, r) && t[e(446)](r), n && r instanceof kr && r[e(520)].length > 0 && z.addAll(t, r[e(559)](n));
    }
    return t;
  }
  [y(466)](n, e) {
    const t = this.getSegmentPoints(), x = vr({ x: n, y: e }, { x: 0, y: 0 }, t);
    return x == null || x.length == 0 ? { x: n, y: e } : x[0];
  }
  setRotateCenter(n) {
    return this.rotateCenter = n, this;
  }
  [y(492)](n, e) {
    const t = y;
    return this.x += n, this.y += e, this.inLinks.forEach((x) => x[t(545)]()), this.outLinks.forEach((x) => x.updateMatrix()), this;
  }
  translateTo(n, e) {
    return this.x = n, this.y = e, this;
  }
  translate(n, e) {
    return this.x = n, this.y = e, this;
  }
  [y(519)](n, e) {
    return this.x = n, this.y = e, this;
  }
  translatePositionTo(n, e, t) {
    const x = y;
    let s = this.positionToLocalPoint(n), i = e - this.x - s.x, r = t - this.y - s.y;
    this[x(492)](i, r);
  }
  resizeTo(n, e) {
    const t = y;
    return this[t(455)] = n, this.height = e, this;
  }
  resize(n, e) {
    return this.width = n, this.height = e, this;
  }
  [y(487)](n, e) {
    return this.skewX = n, this.skewY = e, this;
  }
  resizeWith(n, e) {
    const t = y;
    return this.width += n, this[t(496)] += e, this.width < 0 && (this.width = 0), this.height < 0 && (this[t(496)] = 0), this;
  }
  scaleBy(n, e) {
    return this.scaleX *= n, this.scaleY *= e, this;
  }
  zoom(n, e, t, x) {
    const s = y;
    return this[s(455)] * this.scaleX, this.height * this[s(529)], this.scaleBy(n, e), this;
  }
  [y(538)]() {
    return this[y(478)](0.8, 0.8), this;
  }
  zoomIn() {
    return this[y(478)](1.25, 1.25), this;
  }
  scaleTo(n, e) {
    const t = y;
    return this[t(549)] = n, this.scaleY = e, this;
  }
  scale(n, e) {
    return this.scaleX = n, this.scaleY = e, this;
  }
  [y(509)](n) {
    return this.rotation = n, this;
  }
  rotate(n) {
    return this.rotation = n, this;
  }
  rotateWith(n) {
    const e = y;
    return this[e(504)] += n, this;
  }
  getRect() {
    const n = y;
    return new j(this.x - this.width * 0.5, this.y - this[n(496)] * 0.5, this.width, this.height);
  }
  getPoint(n, e) {
    const t = y;
    let x = this[t(444)](n, e);
    return { x: -this[t(455)] * 0.5 + x.x, y: -this.height + x.y };
  }
  changeParent(n) {
    if (this[y(540)] === n)
      throw new Error("same parent, dont need change");
    let t = this, x = t.toStageXY(0, 0), s = n.stageToLocalXY(x.x, x.y);
    return t.parent && t.parent.removeChild(t), t.setXY(s.x, s.y), n.addChild(t), this;
  }
  setOriginToPosition(n) {
    let e = ae[n];
    return this.origin[0] = e.x, this.origin[1] = e.y, this;
  }
  [y(477)](n, e, t) {
    const x = y;
    let s = this[x(569)][n];
    if (s == null && (s = ae[n]), s == null)
      throw Error(x(506) + n);
    return typeof s == "function" ? s.call(this, e, t) : { x: s.x * this[x(455)], y: s.y * this.height };
  }
  [y(473)](n) {
    let t = this[y(477)](P.center), x = this.positionToLocalPoint(n);
    return j.normal(t, x);
  }
  [y(485)](n) {
    const e = y;
    let t = super.toJSON(n);
    if (n != null) {
      let x = n.shapeIndexMap, s = n.resourcesIndexMap, i = s[this[e(530)]];
      if (i != null && (t[e(555)] = i), this.isNode) {
        let r = x[e(513)](this[e(518)]);
        t.shape = r;
      }
    }
    return t;
  }
  [y(499)]() {
    const n = y;
    super.destory(), this.shape = void 0, this[n(488)] = void 0, this._textArr = void 0, this[n(465)] = void 0, this[n(563)] = void 0;
  }
};
let D = kr;
function U0(n, e) {
  const t = dn();
  return U0 = function(x, s) {
    return x = x - 442, t[x];
  }, U0(n, e);
}
X([u("Node")], D.prototype, y(521), 2), X([u(M.Rect)], D.prototype, "shape", 2), X([u(null)], D.prototype, y(495), 2), X([u(!![])], D.prototype, "rotateWithParent", 2), X([u("center")], D.prototype, "rotateCenter", 2), X([u(0)], D.prototype, "originOffset", 2), X([u(null)], D.prototype, "_text", 2), X([u(null)], D.prototype, "_textArr", 2), X([u(![])], D[y(508)], "_textDirty", 2), X([u(0)], D[y(508)], "_textWidth", 2), X([u(0)], D[y(508)], y(472), 2), X([u(0)], D[y(508)], "_textLineHeight", 2), X([u(!![])], D.prototype, y(522), 2), X([u(cx.Node)], D.prototype, y(531), 2), X([u(0)], D[y(508)], "textRotation", 2), X([u(["className", "isNode"])], D.prototype, y(550), 2), X([u(C.prototype.serializers.concat(["text", "x", "y", y(455), y(496), "shape", "scaleX", y(529), "rotation", "originOffset", "textOffsetX", "textOffsetY", "textRotation", "originAlignPosition", y(528), y(548), y(567)]))], D.prototype, y(539), 2), X([u(function() {
  const n = y;
  return this[n(518)][n(524)];
})], D.prototype, y(494), 2), X([u(function() {
  const n = y;
  return this.shape[n(442)];
})], D.prototype, "getAnchorPoints", 2), X([u(y(518))], D[y(508)], "pickType", 2);
const Y = pn;
(function(n, e) {
  const t = pn, x = n();
  for (; []; )
    try {
      if (-parseInt(t(314)) / 1 + -parseInt(t(306)) / 2 * (parseInt(t(301)) / 3) + parseInt(t(307)) / 4 + parseInt(t(322)) / 5 + -parseInt(t(319)) / 6 + -parseInt(t(317)) / 7 + parseInt(t(308)) / 8 === e)
        break;
      x.push(x.shift());
    } catch {
      x.push(x.shift());
    }
})(fn, 966287);
var zo = Object[Y(299)], Ro = Object.getOwnPropertyDescriptor, p0 = (n, e, t, x) => {
  for (var s = x > 1 ? void 0 : x ? Ro(e, t) : e, i = n.length - 1, r; i >= 0; i--)
    (r = n[i]) && (s = (x ? r(e, t, s) : r(s)) || s);
  return x && s && zo(e, t, s), s;
};
class Rt {
  isDisplayObjectTarget() {
    return this.target instanceof C;
  }
  isNodeTarget() {
    return this instanceof De || this instanceof ux || this instanceof Ae ? this.target.isNode : ![];
  }
  [Y(302)]() {
    return this.target != null;
  }
  toJSON(e) {
    const t = Y;
    let x = this.className, s = Object.assign({ className: x }, this);
    if (this[t(321)] == null)
      delete s.target;
    else if (e != null && this[t(312)]()) {
      let i = e.get(this.target);
      s[t(321)] = i;
    }
    return s;
  }
  static fromJSON(e, t) {
    const x = Y;
    let s = hx(e.className, e);
    if (t != null && typeof e[x(321)] == "number") {
      let i = t[e.target];
      s[x(321)] = i;
    }
    return s;
  }
}
p0([u("Endpoint")], Rt.prototype, Y(313), 2);
class ux extends Rt {
  constructor(e, t, x = 0) {
    super(), this.target = e, this.t = t, this.segIndex = x;
  }
}
p0([u("EndpointSegment")], ux[Y(300)], "className", 2);
class De extends Rt {
  constructor(e, t) {
    super(), this.target = e, this.name = t;
  }
  getAngle() {
    return tr(this.name) + Math.PI;
  }
  getVec() {
    const e = Y;
    return this[e(321)].isNode ? $i(this[e(320)]) : [0, 0];
  }
}
p0([u("EndpointFixedName")], De[Y(300)], Y(313), 2), De.prototype.className = "EndpointFixedName";
class Ae extends Rt {
  constructor(e) {
    super(), this.target = e;
  }
  [Y(315)](e) {
    const t = Y;
    let x = 0;
    if (this.target.isNode) {
      let s = this[t(321)];
      x = Math.atan2(e.y - s.y, e.x - s.x);
    }
    return x;
  }
}
p0([u("EndpointNearest")], Ae[Y(300)], Y(313), 2), Ae[Y(300)].className = "EndpointNearest";
class Jt extends Rt {
  constructor(e, t, x) {
    const s = Y;
    super(), this.x = e, this.y = t, this[s(321)] = x;
  }
}
p0([u(Y(311))], Jt.prototype, "className", 2);
class Fs extends Rt {
  constructor(e) {
    super(), this.fn = e;
  }
  [Y(318)]() {
    let e = this.className, t = this.fn();
    return Object.assign({ className: e, x: t.x, y: t.y }, this);
  }
}
function fn() {
  const n = ["segIndex", "normal", "getPositionNormal", "6HgwlJQ", "4549804grriqm", "9981944cdNggF", "EndpointFunction", "log", "EndpointFixedPoint", "isDisplayObjectTarget", "className", "1096994RBCeQP", "getAngle", "points", "6478941vsNAmR", "toJSON", "2269224SnarpX", "name", "target", "7311985sAzhQa", "defineProperty", "prototype", "480543TBcWzj", "hasTarget"];
  return fn = function() {
    return n;
  }, fn();
}
p0([u(Y(309))], Fs[Y(300)], "className", 2);
function Vt(n, e) {
  const t = Y;
  if (n == null)
    throw new Error("target is null");
  if (n instanceof Rt)
    return n;
  if (e instanceof Rt)
    return e;
  if (n instanceof C)
    return e == P.nearest ? new Ae(n) : new De(n, e || P.center);
  if (T.isLikePoint(n)) {
    let x = n;
    return new Jt(x.x, x.y);
  } else {
    if (typeof n == "function")
      return new Fs(n);
    throw console[t(310)](n, e), new Error("error arguments");
  }
}
const Wo = { lm: [-1, 0], ct: [0, -1], rm: [1, 0], cb: [0, 1] };
function pn(n, e) {
  const t = fn();
  return pn = function(x, s) {
    return x = x - 299, t[x];
  }, pn(n, e);
}
function hi(n) {
  const e = Y;
  if (n == null)
    return;
  let t = n.target;
  if (typeof t != "function") {
    if (n instanceof De)
      return t.className == "ShapeNode" ? t[e(305)](n.name) : Wo[n.name];
    if (n instanceof ux) {
      let x = n[e(303)], s = n.t;
      if (t.className == "ShapeNode") {
        let i = t.positionToLocalPoint(P.center), r = t.getLocalPoint(s, x);
        return j[e(304)](i, r);
      } else if (t instanceof Node) {
        if (x == 0)
          return [0, -1];
        if (x == 1)
          return [1, 0];
        if (x == 2)
          return [0, 1];
        if (x == 3)
          return [-1, 0];
        throw new Error("unkow segIndex:" + x);
      }
      if (t.isAutoFoldLink) {
        let i = t[e(316)][x], r = t.points[x + 1], o = [r.x - i.x, r.y - i.y];
        return B.normalize([], o);
      }
    }
  }
}
function gn() {
  const n = ["22530SpHBTI", "5038472JKQMQS", "length", "9pxQVpG", "2148822dkehvs", "toJSON", "splice", "setBegin", "977804MLHArp", "24805440StomHq", "EndpointFixedPoint", "2742910vzBqao", "getPoints", "1299745zhbOnY", "1393IJMERz", "insert", "1TcaNgO", "15xhqFNI", "endpoints", "replace"];
  return gn = function() {
    return n;
  }, gn();
}
function V0(n, e) {
  const t = gn();
  return V0 = function(x, s) {
    return x = x - 185, t[x];
  }, V0(n, e);
}
const Ft = V0;
(function(n, e) {
  const t = V0, x = n();
  for (; []; )
    try {
      if (-parseInt(t(188)) / 1 * (-parseInt(t(196)) / 2) + -parseInt(t(189)) / 3 * (-parseInt(t(200)) / 4) + parseInt(t(185)) / 5 + parseInt(t(192)) / 6 * (parseInt(t(186)) / 7) + -parseInt(t(193)) / 8 * (parseInt(t(195)) / 9) + parseInt(t(203)) / 10 + -parseInt(t(201)) / 11 === e)
        break;
      x.push(x.shift());
    } catch {
      x.push(x.shift());
    }
})(gn, 693302);
class Ho {
  constructor() {
    const e = V0;
    this[e(190)] = [];
  }
  [Ft(197)](e, t) {
    const x = Ft;
    let s = t[x(204)]();
    return this.endpoints.map((r, o) => {
      const a = x;
      let c = r[a(197)](e);
      if (c.hasOwnProperty("target") && c.target == null) {
        let l = s[0];
        t instanceof Ci ? l = s[o] : o > 0 && (l = s[s.length - 1]);
        let h = { className: a(202), x: l.x, y: l.y };
        return console.log("rs", o, s, h), h;
      }
      return c;
    });
  }
  set(e) {
    const t = Ft, x = this.endpoints;
    x[t(194)] = 0;
    for (let s = 0; s < e[t(194)]; s++) {
      let i = Vt(e[s]);
      x.push(i);
    }
    return x;
  }
  [Ft(187)](e, t) {
    const x = Ft;
    let s = Vt(e);
    return t == null && (t = this[x(190)].length), t + 1 >= this.endpoints.length ? this.endpoints.push(s) : this[x(190)][x(198)](t + 1, 0, s), s;
  }
  [Ft(191)](e, t) {
    this.endpoints[t] != null && (this.endpoints[t] = Vt(e));
  }
  remove(e) {
    this.endpoints.length <= 2 || this.endpoints.splice(e, 1);
  }
  [Ft(199)](e) {
    this.endpoints[0] = Vt(e);
  }
  setEnd(e) {
    const t = Ft;
    if (this.endpoints.length < 2) {
      this[t(190)][1] = Vt(e);
      return;
    }
    let x = this[t(190)][t(194)] - 1;
    this.endpoints[x] = Vt(e);
  }
  getLength() {
    const e = Ft;
    return this[e(190)][e(194)];
  }
  getBegin() {
    return this.endpoints[0];
  }
  getEnd() {
    let e = this.endpoints.length - 1;
    return this.endpoints[e];
  }
}
const m = yn;
(function(n, e) {
  const t = yn, x = n();
  for (; []; )
    try {
      if (-parseInt(t(430)) / 1 + parseInt(t(421)) / 2 * (-parseInt(t(354)) / 3) + -parseInt(t(357)) / 4 * (-parseInt(t(342)) / 5) + -parseInt(t(382)) / 6 * (-parseInt(t(367)) / 7) + parseInt(t(359)) / 8 + -parseInt(t(350)) / 9 * (parseInt(t(358)) / 10) + parseInt(t(392)) / 11 * (parseInt(t(378)) / 12) === e)
        break;
      x.push(x.shift());
    } catch {
      x.push(x.shift());
    }
})(bn, 714439);
function bn() {
  const n = ["_needCalcOffset", "endArrow", "_afterUpdateMatrix", "unlinkBegin", "width", "destory", "4963reeCIT", "addChild", "setEndOffset", "stroke", "label", "mousePickupStroke", "prototype", "endOffset", "begin", "getEndArrowDirection", "point", "12VYkBkw", "translate", "className", "unlink", "8538Xrzcxi", "getLocalPoint", "rotateCenter", "_notUpdateYet", "serializers", "endpoints", "positionToLocalPoint", "isDisplayObjectTarget", "_text", "text", "14914878iWbHoD", "setXY", "max", "getWorldTransform", "setEnd", "beginArrow", "positions", "BezierLink", "drawShape", "originAlignPosition", "shape", "getPoints", "fold2Offset", "beginOffset", "forEach", "remove", "length", "target", "slice", "points", "editable", "center", "function", "path", "isBeginDisplayObject", "defineProperty", "isLink", "setBegin", "objIndexMap", "24JHeAFu", "anchorPoints", "removeOutLink", "end", "draggable", "getPoint", "_setOffsetByVec", "Link", "beginPath", "985836jurpJa", "parent", "draw", "toLayerXY", "fromJSON", "children", "multiplyC", "string", "getBegin", "indexOf", "DefaultPositions", "5AEibGq", "_obb", "_drawContentDesc", "updatePoints", "scale", "matrixDirty", "offsetPoints", "offsetPoints is null", "1570284dkgzrw", "not yet", "unlinkEnd", "_setEndpoints", "308577CvRMbI", "removeChild", "_calcAZ", "623548DBvSmX", "40YaeGsn", "8894360KLWhja", "_offsetAndArrowHandle"];
  return bn = function() {
    return n;
  }, bn();
}
var Fo = Object[m(417)], Yo = Object.getOwnPropertyDescriptor, Tt = (n, e, t, x) => {
  for (var s = x > 1 ? void 0 : x ? Yo(e, t) : e, i = n.length - 1, r; i >= 0; i--)
    (r = n[i]) && (s = (x ? r(e, t, s) : r(s)) || s);
  return x && s && Fo(e, t, s), s;
};
function yn(n, e) {
  const t = bn();
  return yn = function(x, s) {
    return x = x - 340, t[x];
  }, yn(n, e);
}
const Sx = {};
Sx[P[m(375)]] = function() {
  return this.getPoints()[0];
}, Sx[P[m(424)]] = function() {
  let n = this.getPoints();
  return n[n.length - 1];
}, Sx[P.center] = function() {
  let n = this.getPoints();
  return T.middle(n[0], n[n.length - 1]);
};
class R extends C {
  constructor(e, t, x, s, i) {
    const r = m;
    if (super(), this._drawContentDesc = { hasBorder: ![], hasBackgroundColor: ![] }, this[r(391)] = e, this.path = new Ho(), t == null) {
      const o = new Jt(0, 0);
      this[r(415)][r(387)].push(o);
    } else
      this.setBegin(t, s);
    if (x == null) {
      const o = new Jt(0, 0);
      this.path.endpoints.push(o);
    } else
      this[r(396)](x, i);
  }
  get begin() {
    return this[m(415)].getBegin();
  }
  get [m(424)]() {
    return this.path.getEnd();
  }
  get [m(391)]() {
    const e = m;
    return this.label != null ? this[e(371)].text : this[e(390)];
  }
  set [m(391)](e) {
    this.setLabel(e), this._text = e;
  }
  setLabel(e) {
    const t = m;
    return e == null && this.label == null ? this : e instanceof D ? (Ct.LinkHelper.asLabel(this, e), e.mouseEnabled = ![], e) : this[t(371)] != null && typeof e == t(437) ? (this.label.text = e, this) : (Ct.LinkHelper.createLabel(this, e), this);
  }
  attr(e) {
    throw new Error("准备删除的方法");
  }
  getLabel() {
    return this[m(371)];
  }
  getBeginArrow() {
    return this[m(397)];
  }
  setBeginArrow(e) {
    const t = m;
    if (!(e instanceof D))
      throw new Error("arrow must be Node");
    let x = this;
    return x.beginArrow != null && x.removeChild(x[t(397)]), x.children[t(340)](e) == -1 && x.addChild(e), e[t(425)] = ![], e.connectable = ![], e[t(412)] = ![], x.beginArrow = e, this.matrixDirty = !![], this;
  }
  getEndArrow() {
    return this[m(362)];
  }
  setEndArrow(e) {
    const t = m;
    if (!(e instanceof D))
      throw new Error("arrow must be Node");
    let x = this;
    return x.endArrow != null && x.removeChild(x[t(362)]), x[t(435)][t(340)](e) == -1 && x[t(368)](e), e.draggable = ![], e.connectable = ![], e.editable = ![], x[t(362)] = e, this.matrixDirty = !![], this;
  }
  _OBBPoints() {
    return this.getPoints();
  }
  setBegin(e, t) {
    const x = m;
    this.matrixDirty = !![], this.begin && this.begin.isDisplayObjectTarget() && this[x(375)][x(409)].removeOutLink(this);
    const s = Vt(e, t);
    this[x(415)][x(419)](s), s.target instanceof C && s.target.addOutLink(this);
  }
  [m(396)](e, t) {
    const x = m;
    this.matrixDirty = !![], this[x(424)] && this.end[x(389)]() && this.end.target.removeInLink(this);
    const s = Vt(e, t);
    this.path[x(396)](s), s.target instanceof C && s.target.addInLink(this);
  }
  getBeginPoint() {
    const e = m;
    return this.points == null && (this[e(411)] = this.updatePoints()), this.points[0];
  }
  getEndPoint() {
    const e = m;
    return this.points == null && (this[e(411)] = this.updatePoints()), this.points[this.points[e(408)] - 1];
  }
  drawPoints(e) {
    return this[m(400)](e);
  }
  [m(400)](e) {
    const t = m;
    let x = this[t(411)];
    if (this._needCalcOffset() && (x = this.offsetPoints, x == null))
      throw new Error(t(349));
    let s = qt.toAABB(x), i = s.getCenter(), r = Math[t(394)](1, Math.max(s.height, s.width));
    e[t(429)](), e[t(379)](i.x, i.y), e[t(346)](r, r);
    let o = z.getPointsNormalization(x);
    this[t(402)][t(432)](e, this, o), e.scale(1 / r, 1 / r), e.translate(-i.x, -i.y), e[t(370)]();
  }
  _getTotalLineWidth() {
    const e = m, t = this[e(344)], x = this._computedStyle;
    let s = x.lineWidth || 0;
    return s += x.padding || 0, t.hasBorder && (s += x.borderWidth), s;
  }
  draw(e) {
    const t = m;
    if (this.begin == null || this.end == null)
      return this;
    if (this.drawShape(e), !this.isPointOn) {
      const x = this._pickRadius, s = this._computedStyle.lineWidth >= x ? 0 : x;
      this[t(372)](e, s);
    }
    return this;
  }
  _afterStyleComputed() {
    const e = this._computedStyle, t = this._drawContentDesc;
    t.hasBackgroundColor = e.backgroundColor != null, t.hasBorder = e.borderWidth > 0;
  }
  setBeginOffset(e) {
    const t = m;
    this[t(405)] = e, this[t(347)] = !![];
  }
  [m(369)](e) {
    const t = m;
    this[t(374)] = e, this.matrixDirty = !![];
  }
  translateWith(e, t) {
    const x = m;
    let s = this.path.endpoints;
    for (let i = 0; i < s.length; i++) {
      let r = s[i];
      r instanceof Jt && r.target == null && (r.x += e, r.y += t, this[x(347)] = !![]);
    }
    return this[x(347)] && (this.updateMatrix(), this.inLinks[x(406)]((i) => i.updateMatrix()), this.outLinks.forEach((i) => i.updateMatrix())), this;
  }
  [m(356)]() {
    let e = Ke(this, this.begin), t = Ke(this, this.end);
    return [e, t];
  }
  [m(361)]() {
    return this[m(405)] != null && this.beginOffset != 0 ? !![] : this.endOffset != null && this.endOffset != 0 ? !![] : this.beginArrow != null && this.beginArrow.visible ? !![] : this.endArrow != null && this.endArrow.visible ? !![] : ![];
  }
  _offsetA(e, t) {
    const x = m;
    let s = this[x(397)], i = this.beginOffset || 0;
    if (s != null && s.visible && (i = i + s[x(365)]), i != 0) {
      let r = this.getBeginArrowDirection();
      this._setOffsetByVec(e, r, i);
    }
  }
  _offsetZ(e, t) {
    const x = m;
    let s = this.endArrow, i = this.endOffset || 0;
    if (s != null && s.visible && (i = i + s.width), i != 0) {
      let r = this.getEndArrowDirection();
      this[x(427)](t, r, i);
    }
  }
  _setOffsetByVec(e, t, x) {
    const s = m;
    let i = [0, 0];
    B[s(436)](i, t, -x), e.x += i[0], e.y += i[1];
  }
  [m(385)]() {
    const e = m;
    console.log(e(351)), this[e(411)] = this[e(345)]();
  }
  [m(363)]() {
    const e = m;
    this[e(411)] = this[e(345)](), this[e(360)]();
  }
  _offsetAndArrowHandle() {
    const e = m;
    if (this[e(397)] && this.beginArrow.parent !== this && (this[e(397)] = null), this.endArrow && this[e(362)].parent !== this && (this.endArrow = null), !this[e(361)]())
      return;
    let t = this.points[0], x = this.points[this.points.length - 1], s = { x: t.x, y: t.y }, i = { x: x.x, y: x.y };
    if (this._offsetA(s, i), this._offsetZ(s, i), this[e(397)]) {
      let o = { x: (t.x + s.x) * 0.5, y: (t.y + s.y) * 0.5 }, a = Math.atan2(t.y - o.y, t.x - o.x);
      this[e(397)][e(393)](o.x, o.y), this.beginArrow.rotateTo(a);
    }
    if (this.endArrow) {
      let o = { x: (x.x + i.x) * 0.5, y: (x.y + i.y) * 0.5 }, a = Math.atan2(x.y - o.y, x.x - o.x);
      this.endArrow.setXY(o.x, o.y), this.endArrow.rotateTo(a);
    }
    let r = this[e(343)].localPoints[e(410)]();
    r = r.slice(), r[0] = s, r[r.length - 1] = i, this.offsetPoints = r;
  }
  updatePoints() {
    let e = [];
    const t = this.path.endpoints;
    for (let x = 0; x < t.length; x++) {
      let s = t[x], i = Ke(this, s);
      e.push(i);
    }
    return e;
  }
  [m(403)]() {
    const e = m;
    return this[e(411)] == null && (this.points = this[e(345)]()), this.points;
  }
  getTransform() {
    return this.transform;
  }
  _doTransform() {
  }
  nearest(e, t) {
    const x = this.getSegmentPoints(), s = vi({ x: e, y: t }, x);
    return s == null || s.length == 0 ? { x: e, y: t } : s;
  }
  getSegmentPoints() {
    return this.getPoints();
  }
  upgradeParent() {
    let e = this.begin.target, t = this.end.target;
    if (e == null || t == null)
      return;
    let x = Px(e, t);
    if (this.parent !== x)
      return this.changeParent(x), x;
  }
  getBeginArrowDirection() {
    const e = m;
    let t = this.points[0], x = this[e(426)](1e-7), s = [t.x - x.x, t.y - x.y];
    return B.normalize(s, s);
  }
  [m(376)]() {
    const e = m;
    let t = this.getPoint(0.999999), x = this[e(411)][this.points[e(408)] - 1], s = [x.x - t.x, x.y - t.y];
    return B.normalize(s, s);
  }
  isAlone() {
    const e = m;
    return this.begin.isDisplayObjectTarget() || this[e(424)][e(389)]() ? ![] : !![];
  }
  [m(416)]() {
    return this[m(375)].isDisplayObjectTarget();
  }
  isEndDisplayObject() {
    return this.end.isDisplayObjectTarget();
  }
  [m(364)]() {
    const e = m;
    this.begin[e(389)]() && this[e(375)].target[e(423)](this), this[e(419)](this.getBeginPoint());
  }
  unlinkEnd() {
    const e = m;
    this.end.isDisplayObjectTarget() && this[e(424)].target.removeInLink(this), this[e(396)](this.getEndPoint());
  }
  unlink() {
    const e = m;
    this.unlinkBegin(), this[e(352)](), this.matrixDirty = !![];
  }
  [m(407)]() {
    return this[m(381)](), super.remove(), this;
  }
  changeParent(e) {
    const t = m;
    if (this[t(431)] === e)
      throw new Error("same parent, dont need change");
    let x = this, s = this;
    function i(r, o, a) {
      let c = r[o];
      c != null && (c = r.toStageXY(c.x, c.y), r[o] = a.stageToLocalXY(c.x, c.y));
    }
    if (s.begin instanceof Jt && !s.begin.hasTarget()) {
      let r = s.toStageXY(s.begin.x, s.begin.y), o = e.stageToLocalXY(r.x, r.y);
      s.setBegin(o);
    }
    if (s.end instanceof Jt && !s.end.hasTarget()) {
      let r = s.toStageXY(s.end.x, s[t(424)].y), o = e.stageToLocalXY(r.x, r.y);
      s.setEnd(o);
    }
    return s.className == "CurveLink" ? i(s, "ctrlPoint", e) : s.className == t(399) ? (i(s, "ctrlPoint1", e), i(s, "ctrlPoint2", e)) : s.className == "AutoFoldLink" && (i(s, "fold1Offset", e), i(s, t(404), e), i(s, "centerOffset", e)), x.parent && x.parent[t(355)](x), e.addChild(x), this;
  }
  [m(388)](e, t, x) {
    const s = m;
    let i = this[s(398)][e];
    if (i == null && (i = this[s(341)][e]), i == null)
      throw Error("position not exist:" + e);
    return typeof i == s(414) ? i.call(this, t, x) : i;
  }
  toJSON(e) {
    const t = m;
    let x = super.toJSON(e);
    if (e != null) {
      let s = e[t(420)];
      x.path = this.path.toJSON(s, this), this.label != null && (x.label = s.get(this.label)), this.beginArrow != null && (x.beginArrow = s.get(this.beginArrow)), this.endArrow != null && (x.endArrow = s.get(this[t(362)]));
    }
    return x;
  }
  _updateBeginEndAfterJson(e, t) {
    const x = m;
    if (e.label != null) {
      let r = t[e.label];
      this.label = r;
    }
    if (e[x(397)] != null) {
      let r = t[e[x(397)]];
      r[x(401)] = null, r.rotateCenter = x(413), this.setBeginArrow(r);
    }
    if (e.endArrow != null) {
      let r = t[e[x(362)]];
      r[x(401)] = null, r[x(384)] = "center", this.setEndArrow(r);
    }
    let s = e.path, i = s.map((r) => Rt[x(434)](r, t));
    this[x(353)](i);
  }
  [m(353)](e) {
    const t = m;
    this.path.set(e);
    let x = this.path[t(438)]();
    x.isDisplayObjectTarget() && x[t(409)].addOutLink(this), x = this[t(415)].getEnd(), x.isDisplayObjectTarget() && x[t(409)].addInLink(this), e = this[t(415)].endpoints;
    for (let s = 1; s < e[t(408)] - 1; s++)
      x = e[s], x.isDisplayObjectTarget() && x.target.addInLink(this);
  }
  destory() {
    const e = m;
    super[e(366)](), this.unlinkBegin(), this.unlinkEnd(), this.beginArrow = null, this.endArrow = null, this.label = null, this.shape = null, this.points = null, this.unitPoints = null, this[e(348)] = null, this._text = null;
  }
}
Tt([u(m(428))], R[m(373)], "className", 2), Tt([u(M.Line)], R[m(373)], m(402), 2), Tt([u(cx[m(428)])], R.prototype, "_zIndex", 2), Tt([u(!![])], R.prototype, m(418), 2), Tt([u(5)], R.prototype, "_pickRadius", 2), Tt([u(Sx)], R.prototype, m(341), 2), Tt([u([m(380), m(418)])], R.prototype, "allwaysSerializers", 2), Tt([u(C.prototype[m(386)].concat(["beginOffset", "endOffset"]))], R[m(373)], "serializers", 2), Tt([u(function() {
  const n = m;
  return this.shape[n(422)];
})], R.prototype, "getAnchorPoints", 2), Tt([u(function() {
  return this.shape.ctrlPoints;
})], R.prototype, "getCtrlPoints", 2);
function Ke(n, e) {
  const t = m;
  let x;
  if (e instanceof De) {
    let s = e[t(409)];
    x = Vo(n, s, e.name);
  } else if (e instanceof Ae)
    x = Jo(n, e);
  else if (e instanceof ux) {
    let s = e.target, i = e.segIndex, r = e.t;
    x = Uo(n, s, i, r);
  } else if (e instanceof Jt) {
    let s = e.target;
    s == null ? x = { x: e.x, y: e.y } : x = Xo(n, s, e.x, e.y);
  } else if (e instanceof Fs)
    x = e.fn();
  else
    throw console.log(e), new Error("Invalid link's position arguments");
  return x;
}
function Xo(n, e, t, x) {
  const s = m;
  let i = e.getWorldTransform().point({ x: t, y: x });
  return i = n[s(395)]().invert().point(i), i;
}
function Uo(n, e, t, x) {
  const s = m;
  let i;
  return e.parent === n.parent ? (i = e[s(383)](x, t), i = e.getTransform()[s(377)](i)) : (i = e[s(383)](x, t), i = e.getWorldTransform().point(i), i = n.getWorldTransform().invert()[s(377)](i)), i;
}
function Vo(n, e, t) {
  const x = m;
  let s;
  return e.parent === n.parent ? (s = e[x(388)](t), e.isNode && (s = e.getTransform().point(s))) : (s = e.positionToLocalPoint(t), s = e[x(395)]().point(s), s = n.getWorldTransform().invert().point(s)), s;
}
function Jo(n, e) {
  const t = m;
  if (n.deep == 0)
    throw new Error("link's deep is 0!");
  const x = e.target, s = n[t(375)].target === x, i = s ? n[t(424)] : n.begin, r = i.target;
  let o = n[t(395)]().copy(), a;
  i instanceof Ae ? a = r[t(433)](0, 0) : (s ? a = Ke(n, n[t(424)]) : a = Ke(n, n[t(375)]), a = o.point(a));
  let c = x.getWorldTransform();
  a = c.copy().invert()[t(377)](a);
  let l = x.nearest(a.x, a.y);
  return l = c[t(377)](l), l = o.invert()[t(377)](l), l;
}
function Px(n, e) {
  return n.parent === e.parent ? n.parent : n.deep == e.deep ? Px(n.parent, e.parent) : n.deep > e.deep ? Px(n.parent, e) : Px(n, e.parent);
}
var Go = J0;
(function(n, e) {
  for (var t = J0, x = n(); []; )
    try {
      var s = -parseInt(t(283)) / 1 + -parseInt(t(281)) / 2 * (parseInt(t(284)) / 3) + -parseInt(t(278)) / 4 + parseInt(t(288)) / 5 + parseInt(t(282)) / 6 + -parseInt(t(280)) / 7 * (parseInt(t(286)) / 8) + parseInt(t(287)) / 9;
      if (s === e)
        break;
      x.push(x.shift());
    } catch {
      x.push(x.shift());
    }
})(_n, 501967);
function J0(n, e) {
  var t = _n();
  return J0 = function(x, s) {
    x = x - 278;
    var i = t[x];
    return i;
  }, J0(n, e);
}
function _n() {
  var n = ["511340UFomdl", "1953516ObhEGp", "dispose", "2335753GoPrgs", "1362952FnBmXY", "3805014XMuCXc", "82352UDaEik", "3OKXHQx", "stoped", "8DeRfvm", "12162744cAVMeJ"];
  return _n = function() {
    return n;
  }, _n();
}
class qo extends Et {
  constructor() {
    var e = J0;
    super(), this[e(285)] = ![];
  }
  [Go(279)]() {
  }
}
const st = he;
(function(n, e) {
  const t = he, x = n();
  for (; []; )
    try {
      if (-parseInt(t(137)) / 1 + -parseInt(t(125)) / 2 * (-parseInt(t(123)) / 3) + -parseInt(t(131)) / 4 * (-parseInt(t(129)) / 5) + parseInt(t(126)) / 6 * (parseInt(t(133)) / 7) + -parseInt(t(147)) / 8 * (-parseInt(t(140)) / 9) + parseInt(t(136)) / 10 * (parseInt(t(128)) / 11) + -parseInt(t(121)) / 12 === e)
        break;
      x.push(x.shift());
    } catch {
      x.push(x.shift());
    }
})(mn, 315626);
function mn() {
  const n = ["4ybbAjo", "6UAWZNk", "TipNode", "11deasSk", "56795NNNjRp", "content", "68pJCDvd", "ArcLink", "347725fNRGWf", "VideoNode", "top", "6175120TdmIuH", "477496LOOSSL", "SelectedStyle", "rgba(0,0,236,0.1)", "611487qWBKUd", "CircleNode", "LinkArrow", "middle", "FlexionalLink", "name", "SelectArea", "56AxjUbK", "diff", "center", "white", "CurveLink", "createDarkGridImg", "13260132YnFQKf", "#009A93", "843363FiwoVM", "black"];
  return mn = function() {
    return n;
  }, mn();
}
class Sr {
  constructor(e) {
    const t = he;
    if (this.Layer = {}, this[t(146)] = { border: "1px rgba(0,0,0,0.5)", backgroundColor: "rgba(0,0,236,0.1)" }, this[t(138)] = { strokeStyle: t(122), shadowColor: "#009A93" }, this[t(142)] = {}, this.LinkLabel = { textPosition: t(117), textBaseline: t(143), textAlign: t(117) }, this.Node = { textPosition: "cb", textAlign: "center", textBaseline: t(135) }, this.TextNode = { textPosition: "center", textAlign: t(117), textBaseline: t(143) }, this[t(141)] = { textPosition: "cb", textAlign: "center", textBaseline: "top" }, this[t(127)] = { textPosition: "ct", textAlign: "center", textBaseline: t(135) }, this.ShapeNode = { lineWidth: 1, textPosition: "cb", textAlign: t(117), textBaseline: "top" }, this[t(134)] = { textPosition: "cb", textAlign: "center", textBaseline: "top" }, this.RatioNode = { textPosition: "center", textAlign: "center", textBaseline: "middle" }, this.Link = { lineWidth: 1 }, this.FoldLink = { lineWidth: 1 }, this[t(119)] = { lineWidth: 1 }, this.AutoFoldLink = { lineWidth: 1 }, this.BezierLink = { lineWidth: 1 }, this[t(132)] = { lineWidth: 1 }, this[t(144)] = { lineWidth: 1 }, e == null)
      return;
    let x = Object.keys(e);
    for (let s = 0; s < x.length; s++) {
      let i = x[s];
      Object.assign(this[i], e[i]);
    }
  }
  toJSON() {
    const e = he;
    let t = {}, x = Object.keys(this);
    for (let s = 0; s < x.length; s++) {
      let i = x[s], r = Ko[i], o = this[i], a = Ot[e(116)](o, r);
      a != null && (t[i] = a);
    }
    return t;
  }
}
function he(n, e) {
  const t = mn();
  return he = function(x, s) {
    return x = x - 116, t[x];
  }, he(n, e);
}
const Ko = new Sr();
class g0 {
  constructor(e, t) {
    const x = he;
    this[x(145)] = e, this.content = new Sr(t);
  }
  copy(e) {
    let t = JSON.parse(JSON.stringify(this.content));
    return new g0(e, t);
  }
  setStyle(e, t) {
    let x = this.content[e];
    Object.assign(x, t);
  }
  getStyle(e) {
    return this[he(130)][e];
  }
}
let ve = new g0(je.DefaultLightName, { Layer: { background: zt.createLightGridImg() + " repeat" }, SelectArea: { border: "1px solid rgba(0,0,0,0.5)", backgroundColor: st(139) }, LinkArrow: { strokeStyle: "black" }, Node: { strokeStyle: "black" }, TextNode: { strokeStyle: "black" }, TipNode: { strokeStyle: st(124) }, ShapeNode: { strokeStyle: "black" }, CircleNode: { strokeStyle: "black" }, VideoNode: { strokeStyle: "black" }, RatioNode: { strokeStyle: "black" }, Link: { strokeStyle: st(124) }, AutoFoldLink: { strokeStyle: "black" }, FoldLink: { strokeStyle: "black" }, FlexionalLink: { strokeStyle: "black" }, CurveLink: { strokeStyle: st(124) }, BezierLink: { strokeStyle: st(124) }, ArcLink: { strokeStyle: "black" } }), Pr = new g0(je.DefaultDarkName, { Layer: { background: zt[st(120)]() + " repeat" }, SelectArea: { border: "1px solid rgba(255,255,255,0.5)", backgroundColor: "rgba(255,255,255,0.2)" }, LinkArrow: { strokeStyle: "white" }, LinkLabel: { strokeStyle: "white", color: st(118) }, Node: { strokeStyle: "white", color: "white" }, TextNode: { strokeStyle: "white", color: "white" }, TipNode: { strokeStyle: "white", color: st(118) }, ShapeNode: { strokeStyle: "white", color: st(118) }, CircleNode: { strokeStyle: st(118), color: st(118) }, VideoNode: { strokeStyle: st(118), color: "white" }, RatioNode: { strokeStyle: "white", color: "white" }, Link: { strokeStyle: "white" }, AutoFoldLink: { strokeStyle: "white" }, FoldLink: { strokeStyle: "white" }, FlexionalLink: { strokeStyle: "white" }, CurveLink: { strokeStyle: st(118) }, BezierLink: { strokeStyle: st(118) }, ArcLink: { strokeStyle: st(118) } });
const U = i0;
(function(n, e) {
  const t = i0, x = n();
  for (; []; )
    try {
      if (-parseInt(t(112)) / 1 * (-parseInt(t(153)) / 2) + -parseInt(t(151)) / 3 * (-parseInt(t(128)) / 4) + parseInt(t(126)) / 5 + -parseInt(t(113)) / 6 * (parseInt(t(122)) / 7) + parseInt(t(148)) / 8 * (parseInt(t(161)) / 9) + -parseInt(t(131)) / 10 * (parseInt(t(144)) / 11) + parseInt(t(160)) / 12 === e)
        break;
      x.push(x.shift());
    } catch {
      x.push(x.shift());
    }
})(In, 447520);
function In() {
  const n = ["12HlNJfM", "paintSelected", "getStyle", "_paintObjects", "shadowOffsetX", "restore", "beginPath", "strokeStyle", "absolute", "1755110CRavYj", "canvas", "roundRect", "lineTo", "865620cYlGUS", "isMouseInStroke", "4AIDWcy", "currentTheme", "lineWidth", "20aGlkBv", "devicePixelRatio", "cursor", "width", "setCursor", "save", "shadowBlur", "style", "destoryed", "selectedStyle", "clear", "toDataURL", "layer", "3095048tcNeMu", "inputSystem", "closePath", "display", "14072tKIuyM", "event", "isPointInStroke", "2510103sNekML", "displayList", "2ugmysQ", "_doTransform", "SelectedStyle", "quadraticCurveTo", "contextExtends", "length", "stage", "2903700MKNpET", "873NfmrQy", "getHeight", "shadowOffsetY", "context", "image/png", "89293PtVClZ"];
  return In = function() {
    return n;
  }, In();
}
function i0(n, e) {
  const t = In();
  return i0 = function(x, s) {
    return x = x - 111, t[x];
  }, i0(n, e);
}
class Or extends qo {
  constructor(e) {
    const t = i0;
    super(), this[t(139)] = ![], this.layer = e, this.canvas = document.createElement(t(123)), Object.assign(this.canvas.style, { position: t(121), left: "0px" }), this.context = this.canvas.getContext("2d"), this[t(164)].render = this, window.devicePixelRatio && this.context.scale(window[t(132)], window.devicePixelRatio), this.contextExtends();
  }
  _paintFlattenObjects(e) {
    const t = i0;
    let x = this.context;
    for (let s = 0; s < e[t(158)]; s++) {
      let i = e[s];
      if (x.save(), i instanceof D) {
        let r = i._worldTransform, o = r.m;
        x.transform(o[0], o[1], o[2], o[3], o[4], o[5]);
      } else if (!(i.parent instanceof pt)) {
        let o = i.parent._worldTransform, a = o.m;
        x.transform(a[0], a[1], a[2], a[3], a[4], a[5]);
      }
      this.paint(i), x.restore();
    }
  }
  [U(116)](e, t) {
    const x = U;
    let s = this[x(143)], i = this.context;
    for (let r = 0; r < e[x(158)]; r++) {
      let o = e[r];
      if (o._needPaint == ![] || o._isOutOfViewport && !t)
        continue;
      i.save(), o instanceof D && o[x(154)](i), !t && (o.painted = !![]), this.paint(o), s && s[x(152)].push(o), this._paintObjects(o.children, t), i.restore();
    }
  }
  paint(e) {
    const t = U;
    let x = this[t(164)];
    e._computedStyle.applyTo(x);
    let s = e.isSelected && e.showSelected == !![];
    s && (x[t(136)](), this.paintSelected(e)), e.draw(x), s && x[t(118)]();
  }
  paintSelected(e) {
    const t = U;
    let x = this[t(164)];
    if (e.selectedStyle != null && e[t(140)].applyTo(x), e.paintSelected != null) {
      e[t(114)](x);
      return;
    }
    if (e instanceof D) {
      x.save(), x[t(119)]();
      let s = 1;
      e.selectedStyle != null ? s = e.selectedStyle.lineWidth | s : (x.setLineDash([0, 0]), this.styleSystem ? x[t(120)] = this.styleSystem[t(129)].getStyle(t(155)).strokeStyle : x.strokeStyle = ve.getStyle("SelectedStyle")[t(120)]), x[t(130)] = s;
      let i = e.width + s + 3, r = e.height + s + 3;
      x.rect(-i * 0.5, -r * 0.5, i, r), x.stroke(), x[t(146)](), x.restore();
    } else
      this.styleSystem ? x.shadowColor = this.styleSystem.currentTheme.getStyle("SelectedStyle").strokeStyle : x[t(120)] = ve[t(115)](t(155)).shadowColor, x[t(137)] = 5, x[t(117)] = 3, x[t(163)] = 3;
  }
  clearAll() {
    this[U(141)]();
  }
  dontNeedPickup(e) {
    const t = U;
    let x = this[t(159)];
    return x.inputSystem.isDraging && x.inputSystem.target !== e ? !![] : x[t(145)][t(149)] instanceof MouseEvent && !e._isMouseInAABB ? !![] : ![];
  }
  [U(127)](e, t) {
    const x = U;
    let s = this[x(164)], i = this.stage;
    if (e == null || e == 0)
      return t != null ? s.isPointInStroke(t, i.inputSystem.x, i[x(145)].y) : s.isPointInStroke(i[x(145)].x, i[x(145)].y);
    let r = ![];
    for (var o = 0; o < e; o++) {
      if (t != null ? r = s[x(150)](t, i[x(145)].x + o, i.inputSystem.y + o) : r = s[x(150)](i.inputSystem.x + o, i.inputSystem.y + o), r)
        return !![];
      if (t != null ? r = s.isPointInStroke(t, i.inputSystem.x - o, i.inputSystem.y - o) : r = s[x(150)](i.inputSystem.x - o, i.inputSystem.y - o), r)
        return !![];
      if (t != null ? r = s[x(150)](t, i.inputSystem.x - o, i.inputSystem.y + o) : r = s.isPointInStroke(i.inputSystem.x - o, i.inputSystem.y + o), r)
        return !![];
      if (t != null ? r = s.isPointInStroke(t, i.inputSystem.x + o, i[x(145)].y - o) : r = s.isPointInStroke(i[x(145)].x + o, i.inputSystem.y - o), r)
        return !![];
    }
    return ![];
  }
  isMouseInPath(e) {
    const t = U;
    let x = this.context, s = this[t(159)];
    return e ? x.isPointInPath(e, s[t(145)].x, s.inputSystem.y) : x.isPointInPath(s.inputSystem.x, s.inputSystem.y);
  }
  [U(157)]() {
    const e = U;
    this.context[e(124)] == null && (this.context.roundRect = function(t, x, s, i, r) {
      const o = e;
      this.beginPath(), this.moveTo(t + r, x), this[o(125)](t + s - r, x), this.quadraticCurveTo(t + s, x, t + s, x + r), this[o(125)](t + s, x + i - r), this[o(156)](t + s, x + i, t + s - r, x + i), this.lineTo(t + r, x + i), this.quadraticCurveTo(t, x + i, t, x + i - r), this.lineTo(t, x + r), this.quadraticCurveTo(t, x, t + r, x), this.closePath();
    });
  }
  show() {
    const e = U;
    this.canvas[e(138)][e(147)] = "block";
  }
  hide() {
    const e = U;
    this.canvas[e(138)].display = "none";
  }
  getWidth() {
    return this.canvas.width;
  }
  getHeight() {
    return this.canvas.height;
  }
  setSize(e, t) {
    this.canvas.width = e, this.canvas.height = t;
  }
  getCursor() {
    return this.canvas.style.cursor;
  }
  [U(135)](e) {
    const t = U;
    this.canvas[t(138)][t(133)] = e;
  }
  [U(142)](e, t) {
    const x = U;
    return e = e || x(111), this[x(123)].toDataURL(e, t);
  }
  getRectImageData(e, t, x, s) {
    const i = U;
    return e == null && (e = 0), t == 0 && (t = 0), x == null && (x = this.getWidth()), s == null && (s = this[i(162)]()), this[i(164)].getImageData(e, t, x, s);
  }
  clear() {
    const e = U;
    this[e(123)][e(134)] = this.canvas[e(134)];
  }
  dispose() {
    this[U(123)].remove();
  }
}
const Bi = ke;
function ke(n, e) {
  const t = wn();
  return ke = function(x, s) {
    return x = x - 135, t[x];
  }, ke(n, e);
}
(function(n, e) {
  const t = ke, x = n();
  for (; []; )
    try {
      if (-parseInt(t(147)) / 1 * (-parseInt(t(150)) / 2) + parseInt(t(157)) / 3 + parseInt(t(140)) / 4 * (parseInt(t(163)) / 5) + -parseInt(t(138)) / 6 * (-parseInt(t(158)) / 7) + parseInt(t(166)) / 8 + parseInt(t(156)) / 9 + -parseInt(t(154)) / 10 === e)
        break;
      x.push(x.shift());
    } catch {
      x.push(x.shift());
    }
})(wn, 357705);
var Zo = Ot.gc;
function wn() {
  const n = ["strokeStyle", "_paintFlattenObjects", "height", "stroke", "4729rLfWeL", "context", "displayList", "112Zoqphk", "gray", "fillText", "styleY", "25422810XGMcBN", "localView", "5362029EsBHAA", "1695837ARSnNR", "882zUDuKl", "axis", "getObject", "painted", "layer", "35gJhrIu", "paintAxis", "width", "1451632lanrQY", "scaleY", "save", "bold 16px arial", "32166PnHgPy", "lineTo", "352664VUWUWB", "rect", "paintLayer"];
  return wn = function() {
    return n;
  }, wn();
}
let Ni = rt.w;
class Cr extends Or {
  constructor(e) {
    super(e);
  }
  renderLayer(e) {
    const t = ke;
    this.clear(), this.stage = this[t(162)].stage, this.styleSystem = this.stage.styleSystem, e.axis.visible && this.paintAxis(e), this[t(142)](e, ![]), le.paintAABB == !![] && e.displayList != null && this.paintAABB();
    {
      if (Ni == null)
        return;
      let x = this[t(148)];
      x.save(), x.globalAlpha = 0.8, x.font = t(137);
      let s = Zo(Ni);
      x.fillStyle = t(151), x.fillText(s, 14, this.getHeight() - 14), x.restore();
    }
  }
  paintLayer(e, t) {
    const x = ke;
    let s = this.context;
    s.save();
    let i = e.getTransform(), r = i.m;
    return s.transform(r[0], r[1], r[2], r[3], r[4], r[5]), e._computedStyle.applyTo(s), je.flatten ? (e.displayList.forEach((o) => o[x(161)] = !![]), this[x(144)](e.displayList)) : this._paintObjects(e.children, t), s.restore(), e;
  }
  paintAABB() {
    const e = ke;
    let t = this.layer, x = this.context, s = t[e(149)];
    for (let i = s.length - 1; i >= 0; i--) {
      let r = s[i], o = r._obb.aabb;
      o = t.toStageRect(o), x[e(136)](), r instanceof pt ? x[e(143)] = "rgba(0,0,255,0.3)" : r instanceof R ? x.strokeStyle = "pink" : x.strokeStyle = "green", x.beginPath(), x[e(141)](o.x, o.y, o[e(165)], o[e(145)]), x[e(146)](), x.closePath(), x.restore();
    }
  }
  [Bi(164)](e) {
    const t = Bi, x = e[t(159)], s = e.stage;
    let i = this.context;
    const r = s[t(155)][t(160)](), o = s.width, a = s.height, c = r.toScreenXY(0, 0), l = e.scaleX, h = e[t(135)];
    i.save(), c.x > 0 && c.x < o && (i.beginPath(), x[t(153)].applyTo(i), i.moveTo(c.x, 0), i[t(139)](c.x, a), i.moveTo(c.x - 5, a - 8), i.lineTo(c.x, a), i[t(139)](c.x + 5, a - 8), i.stroke(), i.fillText("+y", c.x + 6, a - 5)), c.y > 0 && c.y < a && (i.beginPath(), x.styleX.applyTo(i), i.moveTo(o * 0.5, c.y), i[t(139)](0, c.y), i.moveTo(o * 0.5, c.y), i.lineTo(o, c.y), i.moveTo(o - 8, c.y - 5), i[t(139)](o, c.y), i.lineTo(o - 8, c.y + 5), i[t(146)](), i[t(152)]("+x", o - 5, c.y + 5));
    let d = x.styleX, p = x.styleY;
    d.lineWidth = Math.max(1, l), p.lineWidth = Math.max(1, h), i.restore();
  }
}
const L = G0;
function G0(n, e) {
  const t = vn();
  return G0 = function(x, s) {
    return x = x - 469, t[x];
  }, G0(n, e);
}
(function(n, e) {
  const t = G0, x = n();
  for (; []; )
    try {
      if (parseInt(t(494)) / 1 + parseInt(t(545)) / 2 * (parseInt(t(487)) / 3) + -parseInt(t(514)) / 4 + parseInt(t(540)) / 5 * (-parseInt(t(474)) / 6) + -parseInt(t(478)) / 7 + -parseInt(t(501)) / 8 + parseInt(t(506)) / 9 === e)
        break;
      x.push(x.shift());
    } catch {
      x.push(x.shift());
    }
})(vn, 224664);
var Qo = Object.defineProperty, $o = Object.getOwnPropertyDescriptor, Re = (n, e, t, x) => {
  for (var s = x > 1 ? void 0 : x ? $o(e, t) : e, i = n.length - 1, r; i >= 0; i--)
    (r = n[i]) && (s = (x ? r(e, t, s) : r(s)) || s);
  return x && s && Qo(e, t, s), s;
};
function vn() {
  const n = ["aabb", "update", "1245336GXUoPR", "_whenJsonLoaded", "render", "setZIndex", "Layer", "6628257JFOrVd", "renderTimes", "_computedStyle", "_backgroundImageObject", "filter", "toStageRect", "length", "showAxis", "352568mfqRab", "isDebug", "unionRects", "push", 'url("', "openJsonAndWait", "parse", "isPointOn", "_calcBackgroundPosition", "flattenList", "viewportRect", "_obb", "toJsonObject", "style", "toPoints", "translateWith", "stage", "_onMound", "canvas", "width", "stringify", "frames", "backgroundPosition", "openJson", "getTransform", "then", "1435uitSrq", "show", "axis", "prototype", "_requestReapint", "14yAwMbS", "map", "toAABB", "isNode", "forEach", "height", "2298PjYTjV", "hide", "destroyed", "pickUpChild", "2712528dKOOqN", "getExportAABB", "points", "className", "find", "removeAllChild", "visible", "backgroundColor", "px ", "25359hdLQCE", "_frames", "wheelZoom", "copy", "backgroundSize", "updateSize", "getAABB", "170254YBaaXC", "invert", "backgroundRepeat", "displayList", "clone"];
  return vn = function() {
    return n;
  }, vn();
}
class pt extends D {
  constructor(e) {
    const t = G0;
    super(), this.className = t(505), this[t(507)] = 0, this.viewportRect = new j(0, 0, 1, 1), this.cuttingHide = !![], this.displayList = [], this[t(523)] = [], this[t(489)] = !![], this.axis = new Po(), this.mouseX = -1, this.mouseY = -1, this._frames = 0, this.isFirstComputeBG = !![], this[t(544)] = ![], this._dragDrawDelay = ![], this._bgInfo = { sw: null, sh: null, x: null, y: null }, this.name = e, this[t(484)] = ![], this[t(497)] = [], le[t(515)] && (Ct.layer = this), this.render = new Cr(this), this.canvas = this.render[t(532)];
  }
  get [L(535)]() {
    return this._frames;
  }
  set [L(535)](e) {
    this._frames = e;
  }
  [L(531)](e) {
    this.stage = e, this.render.stage = e;
  }
  update() {
    return this[L(522)](), this._requestReapint = !![], !![];
  }
  [L(513)]() {
    this[L(542)].show();
  }
  hideAxis() {
    const e = L;
    this.axis[e(475)]();
  }
  setRender(e) {
    const t = L;
    this[t(503)] != null && this.render.dispose(), this.render = e, this[t(500)]();
  }
  _isMatrixDirty() {
    return !![];
  }
  updateMatrix(e) {
    const t = L;
    let x = this._getTransformByDeep(Lx);
    this._worldTransform = x;
    let s = x[t(490)]().invert(), i = s.point({ x: this.stage.inputSystem.x || 0, y: this.stage.inputSystem.y || 0 });
    this.mouseX = i.x, this.mouseY = i.y, this.updateViewRect();
  }
  getViewportRectInLayer() {
    return this[L(524)];
  }
  _calc_originInParent() {
    const e = L, t = this.stage;
    return [t[e(533)] * 0.5, t[e(473)] * 0.5];
  }
  toFileJson(e) {
    const t = L;
    let x = this[t(526)](e);
    return JSON[t(534)](x);
  }
  [L(526)](e) {
    const t = L;
    e == null && (e = { imageToBase64: ![] }), typeof e == "boolean" && (e = { imageToBase64: e });
    let x = this[t(530)].serializerSystem.objectsToJSON([this], e.imageToBase64);
    return e.script != null && (x.script = e.script), e.info != null && (x.info = e.info), x;
  }
  [L(537)](e) {
    const t = L;
    It.resetTo(100);
    let x = e;
    typeof e == "string" && (x = JSON[t(520)](e)), this[t(483)]();
    let s = this;
    return new Promise((i, r) => {
      const o = t;
      s[o(530)].serializerSystem.fillByJson(this, x, !![])[o(539)](() => {
        s._whenJsonLoaded(), i(x);
      });
    });
  }
  [L(519)](e) {
    return this.openJson(e);
  }
  [L(502)]() {
    const e = L;
    let t = this.stage, x = this;
    t.styleSystem.markDirty(), t.cancelZoom(), this._resetBg(), x[e(530)].forceUpdate();
  }
  _resetBg() {
    this._bgInfo = { sw: null, sh: null, x: null, y: null }, this._calcBackgroundPosition();
  }
  updateViewRect() {
    const e = L;
    this.viewportRect.setTo(0, 0, this.stage.width, this.stage.height);
    let t = this[e(538)]()[e(495)]();
    const x = this.viewportRect;
    let s = x.toPoints(), i = qt[e(470)](t[e(480)](s));
    return this.viewportRect = i, x;
  }
  [L(492)](e, t) {
    const x = L;
    (e != this.render.getWidth() || t != this.render.getHeight()) && (this.render.setSize(e, t), this.resizeTo(e, t), this[x(500)]());
  }
  pickUpByRect(e) {
    const t = L, x = this;
    let s = [], i = x.displayList;
    if (i != null)
      for (var r = 0; r < i.length; r++) {
        let o = i[r], a = o[t(525)][t(499)];
        o.pickable() && e.containsRect(a) && s[t(517)](o);
      }
    return s;
  }
  [L(477)]() {
    const e = L;
    let t = this.displayList, x = null;
    for (let s = t.length - 1; s >= 0; s--) {
      let i = t[s];
      if (i[e(521)] && i.pickable()) {
        x = i;
        break;
      }
    }
    if (x != null) {
      let s = x.getTopFrozenParent();
      s != null && (x = s);
    }
    return x;
  }
  translateWith(e, t) {
    return super.translateWith(e, t), this._calcBackgroundPosition(), this;
  }
  _calcBackgroundPosition(e = ![]) {
    const t = L;
    if (!this.render) {
      console.log("render not exist");
      return;
    }
    const x = this[t(503)].canvas;
    let s = this[t(508)], i = this._bgInfo, r = s.backgroundRepeat;
    if (r != null && r != "no-repeat") {
      let o = 100, a = 100, c = s[t(509)] || this.style._backgroundImageObject;
      c != null && (o = c[t(533)], a = c.height);
      let l = o * this.scaleX, h = a * this.scaleY, d = this.width * 0.5 % l + this.x, p = this[t(473)] * 0.5 % h + this.y;
      (e || i.sw != l || i.sh != h || i.x != d || i.y != p) && (x[t(527)][t(491)] = l + "px " + h + "px", x.style[t(536)] = d + t(486) + p + "px"), i.sw = l, i.sh = h, i.x = d, i.y = p;
    } else
      x.style[t(536)] = "0px 0px";
  }
  _afterStyleComputed() {
    let e = this._computedStyle.getChangedProps();
    Object.keys(e).filter((x) => x.startsWith("background")).length > 0 && this._updateDomStyle();
  }
  _updateDomStyle() {
    const e = L, t = this[e(532)], x = t[e(527)], s = this[e(508)];
    if (x.background = null, s[e(485)] != null && (x.backgroundColor = s.backgroundColor), s.backgroundImage != null) {
      let i = zt.parseImgUrl(s.backgroundImage);
      x.backgroundImage = e(518) + i + '")';
    }
    return s[e(496)] != null && (x.backgroundRepeat = s.backgroundRepeat), s.backgroundPosition != null && (x[e(536)] = s[e(536)]), s[e(491)] != null && (x[e(491)] = s.backgroundSize), t.width = t[e(533)] + 1, t.width = t[e(533)] - 1, this[e(522)](!![]), this;
  }
  getAABB() {
    const e = L;
    let t = this[e(497)];
    if (t[e(512)] == 0)
      return new j(0, 0, 1, 1);
    let x = t[e(469)]((i) => i._obb.aabb);
    return j.unionRects(x);
  }
  [L(479)]() {
    const e = L;
    let t = this[e(523)][e(510)]((i) => i._cameraVisible);
    if (t.length == 0)
      return new j(0, 0, 1, 1);
    let x = t.map((i) => i._obb.aabb);
    return j.unionRects(x);
  }
  [L(504)](e) {
    this._zIndex = e, this.stage && this.stage.updateZIndex();
  }
  [L(541)]() {
    return super.show(), this.render.show(), this._calcBackgroundPosition(), this;
  }
  [L(475)]() {
    const e = L;
    return super.hide(), this[e(503)][e(475)](), this;
  }
  _OBBPoints() {
    const e = L;
    let t = this.width, x = this[e(473)];
    return [{ x: 0, y: 0 }, { x: t, y: 0 }, { x: t, y: x }, { x: 0, y: x }];
  }
  getPoints() {
    return this._OBBPoints();
  }
  draw(e) {
  }
  zoom(e, t, x, s) {
    return this.stage.camera.zoomLayer(this, e, x, s), this;
  }
  cancelZoom() {
    this[L(530)].camera.cancelZoom();
  }
  forceUpdate() {
    this.stage.renderSystem._tickLayer(this, Date.now());
  }
  setBackground(e, t) {
    const x = L;
    this.render.canvas.style.background = e, this.render.canvas.style[x(491)] = t;
  }
  [L(482)](e, t, x = ![]) {
    return this._findChildren(e, t, x);
  }
  toStageRect(e) {
    const t = L;
    let x = e[t(498)](), s = this.getTransform(), i = x[t(528)]();
    return qt.toAABB(s.points(i));
  }
  toLayerRect(e) {
    let t = this.getTransform().invert(), x = e.toPoints();
    return qt.toAABB(t.points(x));
  }
  dragEndHandler() {
    const e = L;
    if (this._dragDrawDelay == ![])
      return;
    let t = this.render[e(532)], x = t.offsetLeft, s = t.offsetTop;
    this[e(529)](x, s), t.style.left = "0px", t[e(527)].top = "0px";
  }
  addChild(e) {
    return super.addChild(e), this.update(), this;
  }
  addChilds(e) {
    const t = L;
    super.addChilds(e), this[t(500)]();
  }
  centerBy(e) {
    const t = L;
    let x = this, s = x.stage, i;
    if (e == null)
      i = x[t(479)]();
    else if (e instanceof C)
      i = e[t(493)]();
    else {
      let l = e.map((h) => h[t(493)]());
      i = j[t(516)](l);
    }
    i = x[t(511)](i);
    let r = s[t(533)] / 2, o = s.height / 2, a = r - i.x, c = o - i.y;
    a -= i.width / 2, c -= i.height / 2, x[t(529)](a, c), x.update();
  }
  getAllVisiable() {
    const e = L;
    return C.flatten(this.children, (t) => t[e(484)] == !![]);
  }
  loopRender(e = 60) {
    const t = L;
    this[t(488)] = e;
  }
  endLoopRender() {
    this._frames = 0;
  }
  destory() {
    const e = L;
    if (this[e(476)])
      throw new Error("Layer has been destroyed already.");
    this.destroyed = !![], this[e(530)] && this.stage.removeChild(this), this[e(503)].dispose(), this[e(497)] = void 0, this[e(523)] = void 0, this.listeners = void 0, this.style = void 0, this.viewportRect = void 0, this.classList.length = 0, this.render = void 0, this.stage = void 0, this.children[e(472)]((t) => t.removeFromParent()), this.children.length = 0;
  }
}
Re([u("true")], pt[L(543)], "className", 2), Re([u(!![])], pt.prototype, "isLayer", 2), Re([u(![])], pt.prototype, L(471), 2), Re([u([L(481), "isLayer"])], pt.prototype, "allwaysSerializers", 2), Re([u(["id", "name"])], pt.prototype, "serializers", 2), Re([u("undefined")], pt[L(543)], "_layerIndex", 2);
const _e = r0;
function r0(n, e) {
  const t = kn();
  return r0 = function(x, s) {
    return x = x - 446, t[x];
  }, r0(n, e);
}
(function(n, e) {
  const t = r0, x = n();
  for (; []; )
    try {
      if (-parseInt(t(475)) / 1 * (-parseInt(t(453)) / 2) + -parseInt(t(474)) / 3 + -parseInt(t(450)) / 4 * (-parseInt(t(457)) / 5) + -parseInt(t(478)) / 6 * (parseInt(t(464)) / 7) + -parseInt(t(461)) / 8 * (parseInt(t(469)) / 9) + -parseInt(t(458)) / 10 * (parseInt(t(473)) / 11) + parseInt(t(480)) / 12 * (parseInt(t(449)) / 13) === e)
        break;
      x.push(x.shift());
    } catch {
      x.push(x.shift());
    }
})(kn, 436947);
var ta = Object.defineProperty, ea = Object.getOwnPropertyDescriptor, xa = (n, e, t, x) => {
  const s = r0;
  for (var i = x > 1 ? void 0 : x ? ea(e, t) : e, r = n[s(472)] - 1, o; r >= 0; r--)
    (o = n[r]) && (i = (x ? o(e, t, i) : o(i)) || i);
  return x && i && ta(e, t, i), i;
};
function kn() {
  const n = ["abs", "currentTheme", "css", "111245uqpozW", "1268530BwrPAN", "_computedStyle", "fillStyle", "2496NnZXAu", "height", "areaBox", "14cOfVUJ", "mouseDownX", "mouseDownY", "restore", "font", "24579IeurNX", "styleSystem", "bold 16px arial", "length", "44WyRJPA", "2251872oaqlFm", "6LkiuUK", "clear", "showAreaBox", "1944036mtKCIS", "children", "348EmJLdx", "_frames", "layer", "stage", "1018251vIDhVu", "88eTgcOT", "renderLayer", "SelectArea", "144702CDTIib"];
  return kn = function() {
    return n;
  }, kn();
}
const na = Ot.gc, ji = rt.w;
class sa extends Or {
  constructor(e, t) {
    const x = r0;
    super(t), this[x(448)] = e;
  }
  [_e(451)](e) {
    const t = _e;
    this[t(476)](), this.stage = this[t(447)][t(448)], this[t(470)] = this.stage.styleSystem;
    let x = this.context;
    return x.save(), e[t(459)].applyTo(x), e.draw(x), je.flatten ? (e.displayList.forEach((i) => i.painted = !![]), this._paintFlattenObjects(e.displayList)) : this._paintObjects(e[t(479)], ![]), x[t(467)](), e;
  }
}
class Ys extends pt {
  constructor(e) {
    const t = _e;
    super(), this[t(446)] = 0, this._zIndex = cx.HandlerLayerCanvas, It.back(), this.stage = e, this.areaBox = new D(), It.back(), this.addChild(this.areaBox), this.axis.visible = ![], this.visible = !![], this.setRender(new sa(e, this)), this[t(463)].css(ve.getStyle(t(452))), this[t(463)].hide();
  }
  [_e(477)]() {
    const e = _e, t = this.stage.inputSystem, x = this[e(463)];
    let s = this.stage.styleSystem[e(455)];
    x[e(456)](s.getStyle("SelectArea"));
    let i = t[e(465)], r = t[e(466)], o = t.x, a = t.y, c = Math[e(454)](i - o), l = Math.abs(r - a), h = Math.min(i, o), d = Math.min(r, a);
    return x.resizeTo(c, l), x.translateTo(h, d), x.translateWith(c * 0.5, l * 0.5), this[e(463)].show(), new j(h, d, x.width, x[e(462)]);
  }
  mouseoutHandler(e) {
    this[_e(463)].hide();
  }
  _calc_originInParent() {
    return [0, 0];
  }
  update() {
    return this._requestReapint = !![], !![];
  }
  draw(e) {
    const t = _e;
    if (ji == null)
      return;
    e.save(), e.globalAlpha = 0.6, e[t(468)] = t(471);
    let x = na(ji);
    e[t(460)] = "white", e.fillText(x, 16, this.render.getHeight() - 16), e[t(467)]();
  }
}
xa([u("HandlerLayer")], Ys.prototype, "className", 2);
const Ut = q0;
function Sn() {
  const n = ["pageX", "3738880TDKIYD", "top", "5577912cZxvzC", "video", "style", "pageY", "type", "9PmqZqh", "webkitRequestFullscreen", "clientTop", "1481894TEpKha", "FullWindowDom", "4496820PGoyvC", "bottom", "addEventListener", "touches", "userAgent", "5309121oyyqCW", "substring", "scrollLeft", "muted", "33354992mQWxuC", "offsetParent", "1701910zbMfcd", "scrollTop", "pageYOffset", "left", "clientY", "getXYInDom", "fixed", "_backup", "7xRuWqR", "body"];
  return Sn = function() {
    return n;
  }, Sn();
}
(function(n, e) {
  const t = q0, x = n();
  for (; []; )
    try {
      if (-parseInt(t(231)) / 1 + parseInt(t(218)) / 2 + -parseInt(t(225)) / 3 + parseInt(t(220)) / 4 + -parseInt(t(208)) / 5 + parseInt(t(210)) / 6 * (-parseInt(t(205)) / 7) + -parseInt(t(229)) / 8 * (-parseInt(t(215)) / 9) === e)
        break;
      x.push(x.shift());
    } catch {
      x.push(x.shift());
    }
})(Sn, 885481);
const Er = class {
  static [Ut(222)](n, e, t) {
    const x = Ut;
    let s = n.attachEvent || n.addEventListener;
    Ot.isFirefox() && e == "mousewheel" ? e = "DOMMouseScroll" : window.attachEvent && e[x(226)](0, 2) !== "on" && (e = "on" + e), s.call(n, e, t);
  }
  static getOffsetPosition(n) {
    const e = Ut;
    if (n == null)
      return { left: 0, top: 0 };
    let t = 0, x = 0;
    if (n.getBoundingClientRect != null) {
      let s = n.getBoundingClientRect(), i = n.ownerDocument, r = i.body, o = i.documentElement, a = o.clientTop || r[e(217)] || 0, c = o.clientLeft || r.clientLeft || 0;
      t = s[e(209)] + (window[e(199)] || o && o[e(198)] || r.scrollTop) - a, x = s[e(200)] + (window.pageXOffset || o && o[e(227)] || r[e(227)]) - c;
    } else
      do
        t += n.offsetTop || 0, x += n.offsetLeft || 0, n = n[e(230)];
      while (n);
    return { left: x, top: t };
  }
  static createVideo(n, e) {
    const t = Ut;
    if (typeof n == "string") {
      let x = document.createElement(t(211));
      x.muted = t(228), x.style.display = "none";
      let s = document.createElement("source");
      return s.setAttribute("_source", "jtopo"), s[t(214)] = "video/mp4", s.src = n, x.appendChild(s), document[t(206)].appendChild(x), x.oncanplay = function() {
        e(x);
      }, x;
    } else
      return n;
  }
  static fullWindow(n) {
    const e = Ut;
    let t = "position,width,height,left,top,bottom,right,zIndex".split(",");
    if (n.fullScreen == !![]) {
      let x = n._backup;
      t.forEach((s) => {
        n.style[s] = x[s];
      }), n.fullScreen = ![];
    } else {
      let x = {};
      t.forEach((s) => {
        const i = q0;
        x[s] = n[i(212)][s];
      }), n[e(204)] = x, n.style.position = e(203), n[e(212)].left = 0, n[e(212)].top = 0, n[e(212)][e(221)] = 0, n[e(212)].right = 0, n.style.zIndex = cx[e(219)], n.fullScreen = !![];
    }
  }
  static fullScreen(n) {
    const e = Ut;
    n.requestFullscreen ? n.requestFullscreen() : n.mozRequestFullScreen ? n.mozRequestFullScreen() : n.webkitRequestFullscreen ? n[e(216)]() : n.msRequestFullscreen && n.msRequestFullscreen();
  }
  static [Ut(202)](n, e) {
    const t = Ut;
    let x = e.touches[0][t(207)], s = e[t(223)][0][t(213)];
    e.touches[0].pageX == null && (x = e.touches[0].clientX + document.body.scrollLeft - document.body.clientLeft, s = e.touches[0][t(201)] + document[t(206)][t(198)] - document.body.clientTop);
    let i = Er.getOffsetPosition(n), r = x - i.left, o = s - i[t(209)];
    return { x: r, y: o };
  }
};
let Be = Er;
Be.isMobileDevice = /Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(navigator[Ut(224)]);
function q0(n, e) {
  const t = Sn();
  return q0 = function(x, s) {
    return x = x - 198, t[x];
  }, q0(n, e);
}
(function(n, e) {
  const t = Pn, x = n();
  for (; []; )
    try {
      if (parseInt(t(376)) / 1 + -parseInt(t(377)) / 2 * (parseInt(t(371)) / 3) + -parseInt(t(372)) / 4 * (parseInt(t(379)) / 5) + -parseInt(t(369)) / 6 + -parseInt(t(368)) / 7 * (-parseInt(t(370)) / 8) + -parseInt(t(378)) / 9 + parseInt(t(374)) / 10 * (parseInt(t(375)) / 11) === e)
        break;
      x.push(x.shift());
    } catch {
      x.push(x.shift());
    }
})(On, 874823);
function Pn(n, e) {
  const t = On();
  return Pn = function(x, s) {
    return x = x - 368, t[x];
  }, Pn(n, e);
}
const Lr = { execute(n, e) {
  const t = Pn;
  if (n == null)
    return;
  new Function(t(373) + n)()(e.stage, e, Ct);
} };
function On() {
  const n = ["690927QiNrTN", "12eypIQA", "return ", "3392430uPbdrJ", "11fgBQmL", "1706060VpWJaz", "4Ohebsb", "6580026gbxsYO", "1011405lNnjan", "7tFYNwC", "1402044WrCcbN", "6894152fTJVbd"];
  return On = function() {
    return n;
  }, On();
}
function Cn(n, e) {
  const t = En();
  return Cn = function(x, s) {
    return x = x - 288, t[x];
  }, Cn(n, e);
}
const ia = Cn;
(function(n, e) {
  const t = Cn, x = n();
  for (; []; )
    try {
      if (parseInt(t(297)) / 1 + parseInt(t(289)) / 2 * (parseInt(t(294)) / 3) + parseInt(t(295)) / 4 + parseInt(t(298)) / 5 + -parseInt(t(288)) / 6 * (-parseInt(t(292)) / 7) + parseInt(t(296)) / 8 * (parseInt(t(291)) / 9) + -parseInt(t(293)) / 10 * (parseInt(t(299)) / 11) === e)
        break;
      x.push(x.shift());
    } catch {
      x.push(x.shift());
    }
})(En, 162297);
let ra = ia(290), Tr = document.createElement("div");
Tr.innerHTML = ra;
function En() {
  const n = ["520wdQXya", "59041VHCbkW", "22050Xqpwkn", "11iIedtG", "108LLPZUp", "6DOGXfn", `
<svg viewBox="0 0 24 24" id="zoom-in">
<path d="M4,20 L9.58788778,14.4121122"/>
<path d="M14,16 C10.6862915,16 8,13.3137085 8,10 C8,6.6862915 10.6862915,4 14,4 C17.3137085,4 20,6.6862915 20,10 C20,13.3137085 17.3137085,16 14,16 Z"/>
<path d="M16.6666667 10L11.3333333 10M14 7.33333333L14 12.6666667"/>
</svg>
<svg viewBox="0 0 24 24" id="zoom-out">
<path d="M14,16 C10.6862915,16 8,13.3137085 8,10 C8,6.6862915 10.6862915,4 14,4 C17.3137085,4 20,6.6862915 20,10 C20,13.3137085 17.3137085,16 14,16 Z"/>
<path d="M16.6666667 10L11.3333333 10M4 20L9.58788778 14.4121122"/>
</svg>
<svg viewBox="0 0 24 24" id="back-left">
<path d="M5,17 L5,15 C5,10.0294373 8.80557963,6 13.5,6 C18.1944204,6 22,10.0294373 22,15"/>
<polyline points="8 15 5 18 2 15"/>
</svg>
<svg viewBox="0 0 24 24" id="align-center">
<path d="M8 10L16 10M6 6L18 6M6 14L18 14M8 18L16 18"/>
</svg>
<svg viewBox="0 0 24 24" id="edit">
<path d="M18.4142136 4.41421356L19.5857864 5.58578644C20.366835 6.36683502 20.366835 7.63316498 19.5857864 8.41421356L8 20 4 20 4 16 15.5857864 4.41421356C16.366835 3.63316498 17.633165 3.63316498 18.4142136 4.41421356zM14 6L18 10"/>
</svg>
<svg viewBox="0 0 24 24" id="lock-alt">
<rect width="14" height="10" x="5" y="11"/>
<path d="M12,3 L12,3 C14.7614237,3 17,5.23857625 17,8 L17,11 L7,11 L7,8 C7,5.23857625 9.23857625,3 12,3 Z"/>
<circle cx="12" cy="16" r="1"/>
</svg>
<svg viewBox="0 0 24 24" id="lock-open">
<path d="M7,7.625 L7,7 C7,4.23857625 9.23857625,2 12,2 L12,2 C14.7614237,2 17,4.23857625 17,7 L17,11"/>
<rect width="14" height="10" x="5" y="11"/>
</svg>
<svg viewBox="0 0 24 24" id="pan">
<path d="M20,14 L20,17 C20,19.209139 18.209139,21 16,21 L10.0216594,21 C8.75045497,21 7.55493392,20.3957659 6.80103128,19.3722467 L3.34541668,14.6808081 C2.81508416,13.9608139 2.94777982,12.950548 3.64605479,12.391928 C4.35756041,11.8227235 5.38335813,11.8798792 6.02722571,12.5246028 L8,14.5 L8,13 L8.00393081,13 L8,11 L8.0174523,6.5 C8.0174523,5.67157288 8.68902517,5 9.5174523,5 C10.3458794,5 11.0174523,5.67157288 11.0174523,6.5 L11.0174523,11 L11.0174523,4.5 C11.0174523,3.67157288 11.6890252,3 12.5174523,3 C13.3458794,3 14.0174523,3.67157288 14.0174523,4.5 L14.0174523,11 L14.0174523,5.5 C14.0174523,4.67157288 14.6890252,4 15.5174523,4 C16.3458794,4 17.0174523,4.67157288 17.0174523,5.5 L17.0174523,11 L17.0174523,7.5 C17.0174523,6.67157288 17.6890252,6 18.5174523,6 C19.3458794,6 20.0174523,6.67157288 20.0174523,7.5 L20.0058962,14 L20,14 Z"/>
</svg>
<svg viewBox="0 0 24 24" id="apps-alt">
<rect x="5" y="5" width="2" height="2"/>
<rect x="11" y="5" width="2" height="2"/>
<rect x="17" y="5" width="2" height="2"/>
<rect x="5" y="11" width="2" height="2"/>
<rect x="11" y="11" width="2" height="2"/>
<rect x="17" y="11" width="2" height="2"/>
<rect x="5" y="17" width="2" height="2"/>
<rect x="11" y="17" width="2" height="2"/>
<rect x="17" y="17" width="2" height="2"/>
</svg>
<svg viewBox="0 0 24 24" id="maximise">
<polyline points="21 16 21 21 16 21"/>
<polyline points="8 21 3 21 3 16"/>
<polyline points="16 3 21 3 21 8"/>
<polyline points="3 8 3 3 8 3"/>
</svg>
<svg viewBox="0 0 24 24" id="minimise">
<polyline points="8 3 8 8 3 8"/>
<polyline points="21 8 16 8 16 3"/>
<polyline points="3 16 8 16 8 21"/>
<polyline points="16 21 16 16 21 16"/>
</svg>
<svg viewBox="0 0 24 24" id="download">
<path d="M12,3 L12,16"/>
<polyline points="7 12 12 17 17 12"/>
<path d="M20,21 L4,21"/>
</svg>
<svg viewBox="0 0 24 24" id="rectangle">
<rect width="18" height="18" x="3" y="3"/>
</svg>
<svg viewBox="0 0 24 24" id="cursor">
<polygon points="7 20 7 4 19 16 12 16 7 21"/>
</svg>
<svg viewBox="0 0 24 24" id="search">
<path d="M14.4121122,14.4121122 L20,20"/>
<circle cx="10" cy="10" r="6"/>
</svg>
<svg viewBox="0 0 24 24" id="eye">
<path d="M22 12C22 12 19 18 12 18C5 18 2 12 2 12C2 12 5 6 12 6C19 6 22 12 22 12Z"/>
<circle cx="12" cy="12" r="3"/>
</svg>
<svg viewBox="0 0 24 24" id="save">
<path d="M17.2928932,3.29289322 L21,7 L21,20 C21,20.5522847 20.5522847,21 20,21 L4,21 C3.44771525,21 3,20.5522847 3,20 L3,4 C3,3.44771525 3.44771525,3 4,3 L16.5857864,3 C16.8510029,3 17.1053568,3.10535684 17.2928932,3.29289322 Z"/>
<rect width="10" height="8" x="7" y="13"/>
<rect width="8" height="5" x="8" y="3"/>
</svg>
<svg viewBox="0 0 24 24" id="image">
<rect width="18" height="18" x="3" y="3"/>
<path stroke-linecap="round" d="M3 14l4-4 11 11"/>
<circle cx="13.5" cy="7.5" r="2.5"/>
<path stroke-linecap="round" d="M13.5 16.5L21 9"/>
</svg>
<svg viewBox="0 0 24 24" id="upload">
<path d="M12,4 L12,17"/>
<polyline points="7 8 12 3 17 8"/>
<path d="M20,21 L4,21"/>
</svg>
`, "28755SDFUBx", "116844DipdRg", "5623710HWjCBs", "126201DESTkH", "107540gRMQVV"];
  return En = function() {
    return n;
  }, En();
}
let ki = {};
ki.get = function(n) {
  return Tr.querySelector("#" + n);
};
const J = o0;
function o0(n, e) {
  const t = Ln();
  return o0 = function(x, s) {
    return x = x - 346, t[x];
  }, o0(n, e);
}
(function(n, e) {
  const t = o0, x = n();
  for (; []; )
    try {
      if (parseInt(t(398)) / 1 + -parseInt(t(347)) / 2 + parseInt(t(368)) / 3 + parseInt(t(382)) / 4 * (-parseInt(t(392)) / 5) + parseInt(t(361)) / 6 + -parseInt(t(371)) / 7 + parseInt(t(349)) / 8 === e)
        break;
      x.push(x.shift());
    } catch {
      x.push(x.shift());
    }
})(Ln, 497837);
function Ln() {
  const n = ["getAttribute", "createElement", "cancelZoom", "4NVlNKZ", "zoom-out", `</button>
<button title="浏览器全屏" class="item" iconId='maximise'>`, "classList", "要保存的文件名：", "domObj", "files", "then", "script", "hideOverview", "785380TKAUEP", "display", "outerHTML", "removeAllActive", "centerBy", "style", "833508SCPZGW", ' style="display:none" ', "982776vRloPG", "getDom", "2601168sTqnBu", "target", "activeBtn", "lock-alt", "eye", `</button>
<button title="缩小"  class="item" iconId='zoom-out'>`, "cursor", "execute", "setMode", "getCurrentLayer", "getHeigth", "add", "978132QnAHph", "translateToCenter", "buttons", "flash", "zoomFullStage", "querySelector", "select", "445602hIbyxW", "update", "shiftKey", "2267363AeBZWO", "zoom-in", "fileInput", "minimise", "active", "remove", `</button>
<input title="查找" type="text" placeholder="查找" value=""></input>
<button class="item" iconId='search'>`, "get"];
  return Ln = function() {
    return n;
  }, Ln();
}
function et(n) {
  return ki[o0(378)](n).outerHTML;
}
let Mr = J(346);
Mr = "";
var oa = `
<div class="group">
<button title="默认" class="item active" group='mode' iconId='cursor'>` + et(J(355)) + `</button>
<button title="编辑模式" edit="true" class="item" group='mode' iconId='edit' ` + Mr + ">" + et("edit") + `</button>
<button title="框选模式" class="item" group='mode' iconId='rectangle'>` + et("rectangle") + `</button>
<button title="拖拽模式"  class="item" group='mode' iconId='pan'>` + et("pan") + `</button>
<button title="锁定模式" class="item" group='mode' iconId='lock-alt'>` + et(J(352)) + `</button>
</div>

<div class="group">
<button title="放大"  class="item" iconId='zoom-in'>` + et(J(372)) + J(354) + et(J(383)) + `</button>
<button title="居中" class="item" iconId='align-center'>` + et("align-center") + `</button>
<button title="缩放至画布" class="item" iconId='minimise'>` + et(J(374)) + `</button>
<button title="取消缩放" class="item" iconId='back-left'>` + et("back-left") + `</button>
</div>

<div class="group">
<button title="缩略图" class="item" iconId='eye'>` + et(J(353)) + J(384) + et("maximise") + J(377) + ki.get("search")[J(394)] + `</button>
</div>

<div class="group">
<button title="导出PNG" class="item" iconId='image'>` + et("image") + `</button>
<button title="打开本地文件" class="item" iconId='upload'>` + et("upload") + `</button>
<button title="保存到本地" class="item" iconId='save'>` + et("save") + `</button>
<div style="display:none;"><input type="file"/></div>
</div>
`;
class Dr {
  constructor(e) {
    this.imageToBase64 = !![], this.stage = e, this.initToolbar(e, oa);
    let t = this;
    setTimeout(function() {
      t.initActiveStatus();
    }, 200);
  }
  [J(348)]() {
    return this.domObj;
  }
  show() {
    this.domObj.style.display = "block";
  }
  hide() {
    const e = J;
    this.domObj.style[e(393)] = "none";
  }
  remove() {
    const e = J;
    this[e(387)][e(376)]();
  }
  [J(359)]() {
    const e = J;
    return this.domObj[e(397)][e(393)] == "none" ? 0 : this[e(387)].clientHeight + 1;
  }
  initActiveStatus() {
    if (this.stage.mode == "edit") {
      let t = document.querySelector("button[iconid='edit']");
      this.activeBtn(t);
    }
  }
  initToolbar(e, t) {
    const x = J;
    let s = this, i = document[x(380)]("div");
    this.domObj = i, i[x(385)][x(360)]("jtopo_toolbar"), i.innerHTML = t;
    let r = i.querySelectorAll("button");
    this[x(363)] = r;
    let o = i.querySelector('input[type="file"]'), a = o.parentNode;
    function c(_) {
      const I = x;
      a.innerHTML = '<input type="file"/>', l();
      let g = _[I(350)][I(388)][0];
      const k = new FileReader();
      k.readAsText(g), k.onload = function() {
        const S = s.stage.getCurrentLayer(), E = this.result;
        try {
          S.openJson(E), S.translate(0, 0), S.scaleTo(1, 1), document.title = g.name;
        } catch (A) {
          console.log(A), alert("加载出现错误");
        }
      };
    }
    function l() {
      o = i[x(366)]('input[type="file"]'), o.addEventListener("change", c);
    }
    l(), this[x(373)] = o;
    function h() {
      const _ = x;
      let I = e.getCurrentLayer(), g = i[_(366)]('input[type="text"]').value;
      if (g.length > 0) {
        let k = I.displayList;
        for (let S = 0; S < k.length; S++) {
          const E = k[S];
          if (E.text != null && E.text.indexOf(g) != -1) {
            I[_(396)](E, 10), e.effectSystem[_(364)](E).play(), e.editor != null ? e.editor[_(369)]() : e[_(369)]();
            return;
          }
        }
      }
    }
    let d = { cursor: function() {
      e[x(357)]("normal");
    }, rectangle: function() {
      const _ = x;
      e[_(357)](_(367));
    }, pan: function() {
      e[x(357)]("drag");
    }, edit: function() {
      e.setMode("edit");
    }, "lock-alt": function() {
      e.setMode("view");
    }, eye: function() {
      const _ = x;
      e.overview == null || e.overview.visible == ![] ? e.showOverview() : e[_(391)]();
    }, "zoom-in": function() {
      e.zoomIn();
    }, "zoom-out": function() {
      e.zoomOut();
    }, "back-left": function() {
      e[x(381)]();
    }, minimise: function() {
      e[x(365)]();
    }, "align-center": function() {
      e[x(362)]();
    }, maximise: function() {
      e.fullWindow();
    }, image: function() {
      e.saveImageInfo();
    }, save: function() {
      let I = prompt(x(386)), g = s.imageToBase64;
      if (I != null) {
        let k = e.getCurrentLayer(), S = k.toFileJson({ info: { date: (/* @__PURE__ */ new Date()).toLocaleString(), fileName: I }, imageToBase64: g });
        e.download(I + ".json", S);
      }
    }, upload: function() {
      o.click();
    }, search: h };
    i[x(366)]("input").onkeydown = function(_) {
      _.key == "Enter" && h();
    }, i[x(366)]("input").ondblclick = function(_) {
      const I = x;
      if (!_[I(370)])
        return;
      console.log("reloadJsonTest");
      let g = e[I(358)]();
      g.openJson(g.toFileJson())[I(389)]((k) => {
        const S = I;
        Lr[S(356)](k[S(390)], g);
      });
    };
    function p(_) {
      _.onclick = function() {
        const I = o0;
        let g = _.getAttribute("iconId");
        d[g](), s[I(351)](_);
      };
    }
    for (var b = 0; b < r.length; b++) {
      let _ = r[b];
      p(_);
    }
  }
  [J(351)](e) {
    const t = J;
    let x = e[t(379)]("group");
    x != null && (this[t(395)](x), e[t(385)].add("active"));
  }
  removeAllActive(e) {
    const t = J;
    let x = this.buttons;
    for (var s = 0; s < x.length; s++) {
      let i = x[s];
      e == i[t(379)]("group") && i[t(385)].remove(t(375));
    }
  }
}
function ie(n, e) {
  const t = Tn();
  return ie = function(x, s) {
    return x = x - 194, t[x];
  }, ie(n, e);
}
const te = ie;
(function(n, e) {
  const t = ie, x = n();
  for (; []; )
    try {
      if (parseInt(t(194)) / 1 + -parseInt(t(207)) / 2 * (-parseInt(t(217)) / 3) + parseInt(t(206)) / 4 * (parseInt(t(212)) / 5) + parseInt(t(197)) / 6 * (parseInt(t(202)) / 7) + parseInt(t(220)) / 8 + parseInt(t(216)) / 9 * (-parseInt(t(213)) / 10) + -parseInt(t(214)) / 11 === e)
        break;
      x.push(x.shift());
    } catch {
      x.push(x.shift());
    }
})(Tn, 650869);
function Tn() {
  const n = ["unsubscribe", "6954EWqdBZ", "publish", "debounceTime", "removeEventListener", "map", "4340kPgSWI", "移动-x", "observers", "bufferCount", "172sTfhkX", "930268pVsUvN", "complete", "distinct", "error", "push", "76655mZJtJM", "80GCPgpX", "18962031PPZHGY", "pairwise", "721476OZbWZE", "3WowXTu", "indexOf", "reduce", "5879544wDhHAS", "log", "subscribe", "438112Ynzkxq", "fromEvent"];
  return Tn = function() {
    return n;
  }, Tn();
}
class Se {
  constructor() {
    this.observers = [];
  }
  publish(e) {
    return this.observers.forEach((t) => {
      typeof t == "function" ? t(e) : t.next && t.next(e);
    }), this;
  }
  [te(208)]() {
    return this.observers.forEach((e) => {
      typeof e == "function" || e.complete && e.complete();
    }), this;
  }
  [te(210)](e) {
    return this[te(204)].forEach((x) => {
      typeof x == "function" || x.error && x.error(e);
    }), this;
  }
  subscribe(e) {
    const t = te;
    if (this.observers[t(218)](e) != -1)
      throw new Error("重复订阅");
    return this.observers.push(e), this;
  }
  build(e) {
    let t = new Se();
    return this.subscribe((x) => {
      e(t, x);
    }), t;
  }
  filter(e) {
    return this.build((t, x) => {
      e(x) && t.publish(x);
    });
  }
  map(e) {
    return this.build((t, x) => {
      t.publish(e(x));
    });
  }
  [te(219)](e, t) {
    let x = t, s = !![];
    return this.build((i, r) => {
      s && t == null ? (s = ![], x = r) : x = e(r, x), i.publish(x);
    });
  }
  [te(209)]() {
    let e = "-#distinct#-";
    return this.build((t, x) => {
      e !== x && (e = x, t.publish(x));
    });
  }
  debounceTime(e) {
    let t;
    return this.build((x, s) => {
      t != null && clearTimeout(t), t = setTimeout(() => {
        x[ie(198)](s);
      }, e);
    });
  }
  delay(e) {
    return this.build((t, x) => {
      setTimeout(() => {
        t.publish(x);
      }, e);
    });
  }
  pairwise(e = 2) {
    return this[te(205)](e, 1);
  }
  bufferCount(e, t = 1) {
    let x = [];
    return this.build((s, i) => {
      if (x[ie(211)](i), x.length == e) {
        s.publish(x);
        for (let o = 0; o < t; o++)
          x.shift();
      }
    });
  }
  unsubscribe() {
    this.observers.length = 0;
  }
  static fromEvent(e, t) {
    let x = new Se(), s = (i) => {
      x[ie(198)](i);
    };
    return e.addEventListener(t, s), x.unsubscribe = () => {
      e[ie(200)](t, s);
    }, x;
  }
  static of(...e) {
    const t = te;
    let x = new Se(), s;
    return x[t(222)] = function(i) {
      const r = t;
      return this.observers[r(211)](i), s = setTimeout(() => {
        e.forEach((o) => x.publish(o));
      }, 10), this;
    }, x[t(196)] = () => {
      clearTimeout(s);
    }, x;
  }
}
const dt = K0;
(function(n, e) {
  const t = K0, x = n();
  for (; []; )
    try {
      if (parseInt(t(383)) / 1 * (parseInt(t(356)) / 2) + -parseInt(t(345)) / 3 + -parseInt(t(359)) / 4 * (-parseInt(t(380)) / 5) + -parseInt(t(357)) / 6 * (parseInt(t(388)) / 7) + parseInt(t(373)) / 8 * (parseInt(t(375)) / 9) + parseInt(t(371)) / 10 * (parseInt(t(391)) / 11) + parseInt(t(344)) / 12 * (parseInt(t(337)) / 13) === e)
        break;
      x.push(x.shift());
    } catch {
      x.push(x.shift());
    }
})(Mn, 960081);
function Mn() {
  const n = ["140830bmQIEz", "add", "704dcUIjG", "mousedownHandler", "88497sZbzlO", "isMouseDown", "dispatchEvent", "distanceRatio", "updateBaseInfo", "20xUgKsy", "addEventListener", "touches", "13YalMRs", "clientX", "button", "isDragEnd", "updateMouseInfo", "2570407hmiPGs", "touchend", "idleTimer", "341MXSgWH", "type", "painted", "ctrlKey", "mousedown", "offsetY", "touchesDistance", "eventObservable", "wheelZoom", "isDraging", "stage", "mouseout", "169zSBymU", "_initObserve", "touchmove", "click", "has", "previous", "publish", "152616ffGBxQ", "1453938fMkMKZ", "handlerLayer", "mousemove", "call", "metaKey", "mouseenter", "filter", "target", "selectedGroup", "canvas", "getBoundingClientRect", "100424uSWNQO", "24SUDWQV", "mouseDownY", "793564YTjVCB", "pickedObject", "assign", "buttons", "event", "view", "mouseDownX", "isDragStart", "preventDefault", "touchstart", "dragend", "defaultPrevented"];
  return Mn = function() {
    return n;
  }, Mn();
}
function K0(n, e) {
  const t = Mn();
  return K0 = function(x, s) {
    return x = x - 333, t[x];
  }, K0(n, e);
}
class Si extends Et {
  constructor() {
    const e = K0;
    super(), this.skipPointerMovePicking = ![], this[e(333)] = !![], this.mouseDownX = 0, this.mouseDownY = 0, this.x = -1, this.y = -1, this.isMouseDown = ![], this.isDragEnd = ![], this.isDraging = ![], this.isMouseOn = ![], this.isDragStart = ![], this.idleTimeout = 50, this[e(362)] = 0, this[e(385)] = 0, this.touchesDistance = 0, this[e(378)] = 1, this.eventObservable = new Se();
  }
  get [dt(360)]() {
    return this[dt(352)];
  }
  _initEvent(e) {
    const t = dt;
    this.stage = e, aa(this), this[t(338)]();
  }
  _initObserve() {
    const e = dt, t = this, x = this.stage;
    t[e(398)][e(351)]((r) => {
      const o = e, a = r[o(392)];
      return x.mode == kt[o(364)] ? ![] : x.localView.mode == o(393) ? ![] : (a == o(368) && x.forceUpdate(), !![]);
    }).filter((r) => {
      const o = e;
      if (x.mode == kt.edit && x.editor != null) {
        let c = r.type + "Handler";
        if (x.editor[c] && (x.editor[c](r), r instanceof MouseEvent && r[o(370)]))
          return ![];
      }
      return !![];
    }).subscribe((r) => {
      r[e(392)] == "mousewheel" && r.preventDefault();
      let c = r.type + "Handler";
      x[c] && x[c](r), x.overview && (x.overview.dirty = !![]);
    }), t.eventObservable.subscribe((r) => {
      const o = e;
      t.stage.update(), t[o(377)](r);
    });
  }
  [dt(367)]() {
    const e = dt;
    this.event && this[e(363)].preventDefault();
  }
  isRightButton() {
    return this.button == 2;
  }
  updateBaseInfo(e, t) {
    const x = dt, s = Object[x(361)]({}, this);
    this.previous = s, this.event = e, this.timeStamp = e.timeStamp, this[x(392)] = t, this[x(386)] = ![], this.isIdle = ![];
    let i = this;
    this[x(390)] != null && window.clearTimeout(this[x(390)]), this[x(390)] = setTimeout(function() {
      i.isIdle = !![];
    }, this.idleTimeout);
  }
  [dt(387)](e, t) {
    const x = dt;
    this.updateBaseInfo(e, t), this.isMouseOn = e.offsetX > 0 && e[x(396)] > 0;
    const s = this.previous;
    this[x(362)] = e.buttons, this[x(385)] = e.button, this.x = e.offsetX, this.y = e.offsetY, t == x(395) || t == "touchstart" ? (this[x(376)] = !![], this[x(365)] = this.x, this[x(358)] = this.y) : (t == "mouseup" || t == x(340) || t == "mouseout" || t == x(389)) && (this[x(376)] = ![], s.type == "mousemove" && (this.isDragEnd = !![])), this.isDraging = this.isMouseDown == !![] && (t == x(347) || t == x(339) || t == "mousewheel" || t == "mouseenter" || t == x(336)), this[x(366)] = this[x(334)] && s.isDraging != !![], this.dx = this.x - s.x, this.dy = this.y - s.y;
  }
  updateTouchInfo(e, t) {
    const x = dt;
    this[x(379)](e, t);
    const s = this[x(342)], r = this[x(335)][x(346)].render[x(354)][x(355)](), o = r.left, a = r.top;
    if (t != "touchend") {
      const c = e.touches[0], l = c[x(384)] - o, h = c.clientY - a;
      this.x = l, this.y = h;
    }
    if (t == x(368) ? (this.isMouseDown = !![], this.mouseDownX = this.x, this[x(358)] = this.y, this.touchesDistance = 0, this.distanceRatio = 1) : t == x(389) && (this[x(376)] = ![], s && s.type == "touchmove" && (this[x(386)] = !![]), this.touchesDistance = 0, this[x(378)] = 1), this.isDraging = this.isMouseDown == !![] && t == "touchmove", this.isDragStart = this.isDraging && s.isDraging != !![], this.dx = this.x - s.x, this.dy = this.y - s.y, t == "touchmove" && e[x(382)].length >= 2) {
      const c = e.touches[0], l = e[x(382)][1], h = ca(c, l);
      this.touchesDistance != 0 && (this.distanceRatio = h / this.touchesDistance), this[x(397)] = h;
    }
    e[x(367)]();
  }
  _onEvent(e) {
    const t = dt, x = this, s = e[t(392)];
    e instanceof MouseEvent ? x[t(387)](e, s) : x.updateTouchInfo(e, s), x.eventObservable[t(343)](e);
  }
  pickObject(e) {
    const t = dt, x = this.stage, s = this;
    let i = s.event || { type: "mousedown", ctrlKey: ![], metaKey: ![] };
    if (x.inputSystem[t(352)] = e, e == null)
      return;
    e.matrixDirty = !![], s[t(392)] == "mousedown" ? e[t(374)].call(e, s) : i.type == "touchstart" && e.touchstartHandler[t(348)](e, s);
    const r = i[t(394)] || i[t(349)];
    x[t(353)][t(341)](e) ? r && x[t(353)].remove(e) : (!r && x.selectedGroup.removeAll(), x.selectedGroup[t(372)](e));
  }
}
function aa(n) {
  const e = dt;
  let t = n[e(335)], x = t.handlerLayer.render.canvas;
  [e(350), e(336), "mouseover", "mousedown", "mouseup", "mousemove", "mousewheel", e(340), "dblclick", "dragstart", e(369), "dragover", "drop", e(368), "touchmove", "touchend"].map(function(i) {
    Be[e(381)](x, i, function(o) {
      n._onEvent(o);
    });
  });
}
function ca(n, e) {
  const t = e.pageX - n.pageX, x = e.pageY - n.pageY;
  return Math.sqrt(t * t + x * x);
}
const xt = Pe;
function Dn() {
  const n = ["altKey", "1384aafYsq", "480752PEYHeJ", "regMap", "metaKey", "get", "inputSystem", "699890xRHNeu", "init", "push", "866698GNBcnO", "join", "6xknNJs", "isMouseOn", "10lTeoRL", "key", "isKeydown", "set", "sort", "toLowerCase", "debug", "preventDefault", "2787zcjhUB", "editor", "split", "unBind", "checkValid", "alt", "isShiftDown", "keydown", "stage", "delete", "_disabled", "fireKey", "isControlDown", "253412hzRAGG", "ctrlKey", "2741139oHyRwL", "keys", "getKeyBinding", "5139123azDeil", "5PsaEAp"];
  return Dn = function() {
    return n;
  }, Dn();
}
(function(n, e) {
  const t = Pe, x = n();
  for (; []; )
    try {
      if (-parseInt(t(485)) / 1 * (-parseInt(t(479)) / 2) + parseInt(t(466)) / 3 * (parseInt(t(487)) / 4) + -parseInt(t(493)) / 5 * (-parseInt(t(456)) / 6) + parseInt(t(496)) / 7 + -parseInt(t(488)) / 8 + -parseInt(t(481)) / 9 * (parseInt(t(458)) / 10) + -parseInt(t(484)) / 11 === e)
        break;
      x.push(x.shift());
    } catch {
      x.push(x.shift());
    }
})(Dn, 386898);
function Pe(n, e) {
  const t = Dn();
  return Pe = function(x, s) {
    return x = x - 455, t[x];
  }, Pe(n, e);
}
class Ar extends Et {
  constructor(e) {
    const t = Pe;
    super(), this.debug = ![], this._disabled = ![], this.regMap = /* @__PURE__ */ new Map(), this.keyMap = /* @__PURE__ */ new Map(), this.stage = e, this[t(494)](), this.debug = ![];
  }
  disable() {
    const e = Pe;
    this[e(476)] = !![];
  }
  enable() {
    const e = Pe;
    this[e(476)] = ![];
  }
  [xt(478)]() {
    return this.isKeydown("Control");
  }
  [xt(472)]() {
    return this.isKeydown("Shift");
  }
  isAltDown() {
    return this.isKeydown("Alt");
  }
  isMetaDown() {
    return this[xt(460)]("Meta");
  }
  bindKey(e, t) {
    const x = xt;
    let s = e[x(463)]().split("+")[x(462)]()[x(455)]("+");
    this[x(489)].set(s, t);
  }
  isKeyRegistered(e) {
    return this.getKeyBinding(e) != null;
  }
  [xt(483)](e) {
    const t = xt;
    let x = e.toLowerCase().split("+")[t(462)]().join("+");
    return this.regMap.get(x);
  }
  [xt(469)](e) {
    return this.unbind(e);
  }
  unbind(e) {
    const t = xt;
    let x = e.toLowerCase().split("+").sort().join("+");
    this.regMap[t(475)](x);
  }
  [xt(460)](e) {
    return this.keyMap.get(e.toLowerCase());
  }
  sendKey(e, t) {
    const x = xt;
    t == null && (t = new KeyboardEvent("keydown"), t.mock = !![]), this[x(477)](e.toLowerCase()[x(468)]("+"), t, !![]);
  }
  checkValid() {
    let e = document.activeElement.tagName;
    return this._disabled || e == "INPUT" || e == "TEXTAREA" ? ![] : !![];
  }
  fireKey(e, t, x) {
    const s = xt;
    if (x == ![])
      return;
    const i = this;
    let r = this[s(474)], o = r.editor, a = e.sort()[s(455)]("+").toLowerCase();
    this[s(464)] && console.log("按下", a);
    let c = this.regMap[s(482)]();
    for (let l of c) {
      if (l != a || o != null && o.textInputMode == !![])
        continue;
      t[s(465)]();
      let h = i.regMap[s(491)](l);
      h && h(t);
    }
  }
  keydownHandler(e) {
    const t = xt;
    let x = e.key.toLowerCase(), s = this[t(474)], i = [];
    e[t(480)] && (this.keyMap.set("control", !![]), i.push("control")), e[t(486)] && (this.keyMap.set(t(471), !![]), i[t(495)](t(471))), e.shiftKey && (this.keyMap[t(461)]("shift", !![]), i[t(495)]("shift")), e[t(490)] && (this.keyMap.set("meta", !![]), i.push("meta")), i.indexOf(x) == -1 && i.push(x), this.keyMap.set(x, !![]);
    let r = oi(e);
    this.fireKey(i, r, s[t(492)][t(457)]), this.dispatchEvent(r);
  }
  keyupHandler(e) {
    const t = xt, x = this, s = e[t(459)].toLowerCase();
    x.keyMap.delete(s);
    let i = x.stage[t(467)];
    if (i != null && i.textInputMode == !![])
      return;
    let r = oi(e);
    x.dispatchEvent(r);
  }
  [xt(494)]() {
    const e = xt;
    let t = this, x = Se.fromEvent(document, e(473)), s = Se.fromEvent(document, "keyup"), i = x.filter(() => this.checkValid()), r = s.filter(() => this[e(470)]());
    i.subscribe((o) => {
      t.keydownHandler(o);
    }), r.subscribe((o) => {
      t.keyupHandler(o);
    }), this.keydownOb = i, this.keyupOb = r, this.keyBufferOb = i.map((o) => o[e(459)]).bufferCount(2, 1).map((o) => o[0] + "" + o[1]);
  }
}
function Oe(n, e) {
  const t = An();
  return Oe = function(x, s) {
    return x = x - 389, t[x];
  }, Oe(n, e);
}
const Mt = Oe;
function An() {
  const n = ["55026GltfEv", "dispatchEvent", "push", "726810WinqCq", "7238960IlfZTy", "getNoChildrensObjects", "length", "has", "20vbRKcG", "event", "6155UMiAAW", "objects", "isEmpty", "362523pzwDYn", "3656184iLIxSp", "selectedHandler", "dragHandler", "672CZTuEJ", "remove", "draggable", "375240jdsFKr", "dragEndHandler", "9JEpyVQ"];
  return An = function() {
    return n;
  }, An();
}
(function(n, e) {
  const t = Oe, x = n();
  for (; []; )
    try {
      if (parseInt(t(403)) / 1 * (parseInt(t(395)) / 2) + -parseInt(t(408)) / 3 + -parseInt(t(392)) / 4 + -parseInt(t(405)) / 5 * (-parseInt(t(389)) / 6) + parseInt(t(398)) / 7 + -parseInt(t(409)) / 8 * (-parseInt(t(394)) / 9) + -parseInt(t(399)) / 10 === e)
        break;
      x.push(x.shift());
    } catch {
      x.push(x.shift());
    }
})(An, 310438);
let zi = new InputEvent(gt.groupdragend), la = new InputEvent(gt.groupdrag);
class Br extends Et {
  constructor() {
    const e = Oe;
    super(), this[e(406)] = [], this.isDraging = ![], this.noChildrensObjects;
  }
  isEmpty() {
    const e = Oe;
    return this.objects[e(401)] == 0;
  }
  mouseoutHandler(e) {
    const t = Oe;
    this.isDraging = ![], !this[t(407)]() && this[t(396)](zi);
  }
  [Mt(411)](e) {
    const t = Mt;
    if (this.dispatchEvent(la), e.event instanceof MouseEvent && e[t(404)].defaultPrevented == !![])
      return;
    let x = this[t(400)]();
    for (var s = 0; s < x[t(401)]; s++) {
      let i = x[s];
      i[t(391)] && i.dragHandler(e);
    }
  }
  [Mt(393)](e) {
    this.dispatchEvent(zi);
    let t = this.getNoChildrensObjects();
    for (var x = 0; x < t.length; x++) {
      let s = t[x];
      s.draggable && s.dragEndHandler(e);
    }
  }
  getNoChildrensObjects() {
    return C.getNoChildrensObjects(this.objects);
  }
  addAll(e) {
    const t = Mt;
    for (var x = 0; x < e.length; x++) {
      let s = e[x];
      s.group = this, !z.hasChild(this[t(406)], s) && (s.selectedHandler && s[t(410)](), this.objects[t(397)](s));
    }
    return this;
  }
  add(e) {
    const t = Mt;
    return e.group = this, z.hasChild(this[t(406)], e) ? this : (e.selectedHandler.call(e), this.objects[t(397)](e), this);
  }
  [Mt(390)](e) {
    const t = Mt;
    return e.group = void 0, e.unselectedHandler && e.unselectedHandler(e), z.remove(this[t(406)], e), this;
  }
  removeAll() {
    const e = Mt;
    let t = this.objects;
    for (var x = 0; x < t.length; x++) {
      let s = t[x];
      s.group = void 0, s.unselectedHandler && s.unselectedHandler();
    }
    return this[e(406)].length = 0, this;
  }
  [Mt(402)](e) {
    const t = Mt;
    return z.hasChild(this[t(406)], e);
  }
}
const We = Ce;
(function(n, e) {
  const t = Ce, x = n();
  for (; []; )
    try {
      if (parseInt(t(322)) / 1 + -parseInt(t(318)) / 2 * (parseInt(t(321)) / 3) + parseInt(t(298)) / 4 * (-parseInt(t(302)) / 5) + -parseInt(t(296)) / 6 + -parseInt(t(300)) / 7 * (-parseInt(t(291)) / 8) + parseInt(t(304)) / 9 * (-parseInt(t(314)) / 10) + parseInt(t(303)) / 11 === e)
        break;
      x.push(x.shift());
    } catch {
      x.push(x.shift());
    }
})(Bn, 526222);
function Bn() {
  const n = ["31805840IxBRJn", "136845BIDHQq", "<li>Links: ", "toStageXY", "classList", "length", "<li>_aabb:[x:", "hide", "setContent", "appendChild", "toFixed", "620GoRtHu", "style", "stage", "createElement", "2RnmtUE", "</li>", "<li>Mouse-Layer( x: ", "2524803nEQcpK", "477391VZTcLK", " y: ", "<li>&nbsp;&nbsp;-Layer:  (x: ", "numberFixed", "7928stwjOW", "_timer", "<li>&nbsp;&nbsp;-Canvas: (x: ", "getAllLinks", ") </li>", "4707246PwzTnl", "target", "3832mpAkgA", "show", "49PvEvqm", "innerHTML", "1465UYgpxI"];
  return Bn = function() {
    return n;
  }, Bn();
}
class ha {
  constructor(e) {
    const t = Ce;
    this[t(290)] = 0, this.stage = e;
  }
  init() {
    const e = Ce, t = document[e(317)]("div");
    t[e(307)].add("jtopo_debugPanel"), this.stage.layersContainer[e(312)](t), this.domElement = t, this.hide();
  }
  start(e = 24) {
    const t = Ce, x = this, s = this[t(316)];
    function i() {
      const r = t;
      if (s.inputSystem.isIdle)
        return;
      let o = s.getChildren(), a = 0, c = 0, l = 0;
      for (var h = 0; h < o[r(308)]; h++) {
        let k = o[h];
        a += k.displayList.length, c += k.getAllNodes().length, l += k[r(294)]().length;
      }
      let d = Math.ceil(s.inputSystem.x), p = Math.ceil(s.inputSystem.y), b = s.getCurrentLayer(), _ = { x: 0, y: 0 };
      b != null && (_ = b.stageToLocalXY(d, p));
      const I = s.inputSystem[r(297)];
      let g = "<li>Mouse-Canvas( x: " + d + r(323) + p + ")</li>";
      if (g += r(320) + _.x.toFixed(2) + " y: " + _.y.toFixed(2) + ")</li>", g += "<li>Nodes: " + c + r(319), g += r(305) + l + "</li>", g += "<li>Total: " + (c + l) + "</li>", g += "<li>Painted: " + a + r(319), I) {
        g += "<li>Target: id: " + I.id;
        const k = I._obb.aabb, S = I[r(306)](0, 0), E = I.toLayerXY(0, 0), A = this.numberFixed;
        g += r(309) + k.x[r(313)](A) + ",y: " + k.y.toFixed(A) + ",w: " + k.width[r(313)](A) + ", h:" + k.height.toFixed(A) + "] </li>", g += "<li>Origin: [" + I.origin[0].toFixed(A) + ", " + I.origin[1].toFixed(A) + "]</li>", g += r(293) + S.x[r(313)](A) + ", y: " + S.y.toFixed(A) + ") </li>", I instanceof D && (g += "<li>&nbsp;&nbsp;-Parent: (x: " + I.x.toFixed(A) + ", y: " + I.y.toFixed(A) + r(295)), g += r(324) + E.x.toFixed(A) + ", y: " + E.y.toFixed(A) + ") </li>";
      }
      le.debugInfo && (g += "<li>" + le.debugInfo + "</li>"), x[r(311)](g);
    }
    this[t(292)] = setInterval(i, e);
  }
  [We(311)](e) {
    const t = We;
    this.domElement[t(301)] = e;
  }
  checkDom() {
    this.domElement == null && this.init();
  }
  [We(310)]() {
    const e = We;
    return this.checkDom(), clearInterval(this[e(292)]), this.domElement.style.display = "none", this;
  }
  [We(299)](e) {
    const t = We;
    return this.checkDom(), this.domElement[t(315)].display = "block", this.start(e), this;
  }
}
function Ce(n, e) {
  const t = Bn();
  return Ce = function(x, s) {
    return x = x - 290, t[x];
  }, Ce(n, e);
}
const nt = a0;
(function(n, e) {
  const t = a0, x = n();
  for (; []; )
    try {
      if (parseInt(t(149)) / 1 + parseInt(t(174)) / 2 + parseInt(t(144)) / 3 + -parseInt(t(169)) / 4 * (-parseInt(t(141)) / 5) + -parseInt(t(179)) / 6 + -parseInt(t(172)) / 7 + -parseInt(t(164)) / 8 === e)
        break;
      x.push(x.shift());
    } catch {
      x.push(x.shift());
    }
})(Nn, 191871);
function Nn() {
  const n = ["scale", "_paintObjects", "_cameraVisible", "max", "bottom", "_updateTimer", "dirty", "height", "inputSystem", "style", "visible", "paint", "position", "initEvent", "contains", "offsetY", "163555gUHTyG", "stage", "appendChild", "283743IcstNN", "offsetX", "update", "zIndex", "dontNeedPickup", "36713xQeGYO", "width", "filter", "getHeight", "children", "mousewheelHandler", "Handler", "moveWith", "overviewPaint", "lineWidth", "rectObj", "target", "render", "hide", "getRect", "1330472HnBMcN", "save", "getWidth", "left", "css", "44vXcftG", "canvas", "rgba(0,250,50,0.2)", "858781UuqZek", "layersContainer", "14226jlvHPs", "_needPaint", "_overviewTimer", "mousemove", "red", "104190eOISNF"];
  return Nn = function() {
    return n;
  }, Nn();
}
function a0(n, e) {
  const t = Nn();
  return a0 = function(x, s) {
    return x = x - 125, t[x];
  }, a0(n, e);
}
class Nr extends Cr {
  constructor(e, t) {
    const x = a0;
    super(t), this[x(142)] = e;
  }
  [nt(148)](e) {
    return !![];
  }
  paintSelected(e) {
  }
  [nt(157)](e) {
    const t = nt;
    let x = this.context;
    if (x.save(), e._doTransform(x), e._computedStyle.applyTo(x), je.flatten) {
      const s = e.flattenList[t(151)]((i) => i[t(175)] && i[t(127)]);
      this._paintFlattenObjects(s);
    } else
      this[t(126)](e.children, !![]);
    x.restore();
  }
  exportPaintObjects(e) {
    e[0] instanceof pt ? e.forEach((t) => this.overviewPaint(t)) : this._paintObjects(e, !![]);
  }
}
class ua {
  constructor(e) {
    const t = nt;
    this[t(135)] = ![], this[t(131)] = !![], this.paintInterval = 500, this.stage = e, this[t(133)] = new Si(), this[t(161)] = new Nr(e);
    let x = this.render[t(170)];
    x.style.backgroundColor = "rgba(255,255,255,0.5)", x.style.border = "solid 1px gray", x.style[t(137)] = "absolute", x.style.zIndex = "" + (e.handlerLayer[t(147)] + 1), x[t(134)].opacity = "0.7", x.style.right = "0", x[t(134)][t(167)] = null, x.style[t(129)] = "0", e[t(173)][t(143)](x), this.canvas = x, this.domElement = x, this.render.setSize(200, 200 * 0.618), this.rectObj = new D(null, 0, 0), this.rectObj.hide(), this[t(138)](), this.hide();
  }
  [nt(168)](e) {
    if (e == null)
      return this;
    for (let t in e)
      this.canvas.style[t] = e[t];
    return this;
  }
  initEvent() {
    const e = nt;
    let t = this, x = ["mousedown", "mouseup", e(177), "mousewheel"], s = t[e(161)], i = s.canvas, r = this.inputSystem;
    x.map(function(o) {
      Be.addEventListener(i, o, function(a) {
        const c = a0;
        if (a[c(145)] < 0 || a[c(140)] < 0)
          return;
        r.updateMouseInfo(a, o);
        let l = o + c(155);
        if (t[l] == null)
          throw new Error("Overview has no handler:" + o);
        t[l](a);
      });
    });
  }
  show() {
    const e = nt;
    this.visible = !![], this.render.show(), clearInterval(this._overviewTimer);
    let t = this;
    return this[e(176)] = setInterval(function() {
      t.dirty && t.update();
    }, this.paintInterval), this;
  }
  [nt(162)]() {
    return this.visible = ![], this.render.hide(), clearInterval(this._overviewTimer), this;
  }
  getWidth() {
    return this.render.getWidth();
  }
  getHeight() {
    return this.render.getHeight();
  }
  setSize(e, t) {
    return this.render.setSize(e, t);
  }
  paint() {
    const e = nt;
    this[e(131)] = ![];
    let t = this, x = t.stage, s = t[e(161)], i = t.getWidth(), r = t.getHeight(), o = this.stage.getExportAABB(), a = Math.max(i, o.width), c = Math[e(128)](r, o[e(132)]), l = i / a, h = r / c;
    s.clearAll();
    let d = s.context;
    d.save(), d[e(125)](l, h), d.translate(-o.x, -o.y), x.getChildren().forEach(function(p) {
      s[e(157)](p);
    }), d.restore(), this.paintDragRect(d, o);
  }
  paintDragRect(e, t) {
    const x = nt;
    let s = this[x(159)], i = this[x(142)], r = this.render, o = Math.max(t.width, i[x(150)]), a = Math.max(t.height, i[x(132)]), c = i.width / o, l = i[x(132)] / a;
    if (c == 1 && l == 1) {
      s.hide();
      return;
    }
    s.show();
    let h = r.getWidth() * c, d = r.getHeight() * l;
    s.resizeTo(h, d);
    let p = r[x(166)]() / o, b = r[x(152)]() / a, _ = -t.x * p, I = -t.y * b;
    _ < 0 && (_ = 0), I < 0 && (I = 0), _ + s.width > r[x(166)]() && (_ = r.getWidth() - s.width), I + s.height > r[x(152)]() && (I = r[x(152)]() - s[x(132)]), s.translateTo(_, I), e[x(165)](), e[x(158)] = 2, e.fillStyle = x(171), e.strokeStyle = x(178), e.beginPath(), e.rect(s.x, s.y, s[x(150)], s.height), e.stroke(), e.fill(), e.restore();
  }
  update() {
    const e = nt;
    this[e(135)] && this.stage[e(153)].length > 0 && (this.stage[e(146)](), this[e(136)]());
  }
  mousedownHandler() {
    const e = nt;
    let t = this.rectObj[e(163)](), x = this.inputSystem.x, s = this[e(133)].y;
    t[e(139)](x, s) && (this.inputSystem[e(160)] = this.rectObj);
    let i = x - (this.rectObj.x + this[e(159)][e(150)] / 2), r = s - (this.rectObj.y + this.rectObj[e(132)] / 2);
    this.moveWith(i, r);
  }
  mousedragHandler() {
    const e = nt;
    let t = this[e(133)].dx, x = this[e(133)].dy;
    this[e(156)](t, x), this[e(142)].editor && this.stage.editor[e(146)]();
  }
  moveWith(e, t) {
    const x = nt;
    if (!this.rectObj.visible)
      return;
    e < 0 && this.rectObj.x + e <= 0 && (e = -this.rectObj.x), e > 0 && this.rectObj.x + this[x(159)].width >= this.getWidth() && (e = this[x(166)]() - this.rectObj[x(150)] - this[x(159)].x), t < 0 && this.rectObj.y <= 0 && (t = -this[x(159)].y), t > 0 && this.rectObj.y + this.rectObj.height >= this.getHeight() && (t = this.getHeight() - this[x(159)][x(132)] - this[x(159)].y), this.rectObj.translateWith(e, t);
    let i = this.stage.getExportAABB(), r = i.width, o = i.height, a = r * (e / this.getWidth()), c = o * (t / this.getHeight());
    this.stage.getChildren().forEach(function(h, d) {
      h.translateWith(-a, -c);
    });
    let l = this;
    this[x(130)] = setTimeout(function() {
      l.update();
    }, 20), this.stage[x(146)]();
  }
  [nt(154)](e) {
    e.preventDefault();
  }
  mousemoveHandler() {
    this.inputSystem.isDraging && this.mousedragHandler();
  }
  mouseupHandler() {
    this.inputSystem.target = null;
  }
}
const da = `.jtopo_popoupmenu{padding:10px;border-radius:5px;min-width:210px;background-color:#fff;border:1px solid;position:absolute;z-index:10000}.jtopo_popoupmenu .header{font-size:14px;height:24px;padding-bottom:3px}.jtopo_popoupmenu a{text-rendering:optimizeLegibility;font-family:Open Sans,Helvetica Neue,Helvetica,Arial,sans-serif;padding-left:20px;display:block;height:25px;color:#00000080;font-size:13px;cursor:pointer}.jtopo_popoupmenu a:hover{color:#000}.jtopo_iconsPanel{opacity:.8;padding-left:5px;position:absolute;background-color:#e8e8e8;top:90px;width:52px;height:425px;z-index:1000;border-radius:5px}.jtopo_iconsPanel .item{border:1px solid white;width:42px;height:42px;margin-top:10px}.jtopo_toolbar{border-bottom:1px dotted;padding-bottom:2px;border-color:#e0e0e0;width:100%;min-height:33px;background-color:#e8e8e8}.jtopo_toolbar .group{float:left;margin-right:5px}.jtopo_toolbar .item{float:left;width:32px;height:32px;stroke:gray;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;fill:none;font-size:12px;color:gray}.jtopo_toolbar .active{background-color:#d3d3d3;border:1px solid black}.jtopo_toolbar input[type=text]{font-size:12px;color:gray;float:left;width:120px;height:26px;border:1px solid white;margin:2px 2px 2px 4px}.jtopo_input_textfield{position:absolute;display:none;font-size:smaller;z-index:10000}.jtopo_tooltip{pointer-events:none;opacity:.9;min-width:30px;min-height:30px;padding:10px;border-radius:5px;background-color:#f8f8f8;border:1px solid;position:absolute;z-index:10000}.jtopo_historyPanel{position:absolute;left:0px;top:100%;width:879px;overflow-x:scroll;height:600px;z-index:1000}.jtopo_debugPanel{user-select:none;border:dashed 1px gray;padding:8px;position:absolute;left:0px;top:0%;width:300px;z-index:98;text-align:left;font-size:10px;color:gray}
`, F = Wt;
(function(n, e) {
  const t = Wt, x = n();
  for (; []; )
    try {
      if (parseInt(t(188)) / 1 * (parseInt(t(161)) / 2) + parseInt(t(149)) / 3 * (parseInt(t(174)) / 4) + parseInt(t(151)) / 5 * (parseInt(t(186)) / 6) + -parseInt(t(181)) / 7 * (-parseInt(t(165)) / 8) + parseInt(t(164)) / 9 + -parseInt(t(167)) / 10 * (parseInt(t(189)) / 11) + -parseInt(t(203)) / 12 * (parseInt(t(148)) / 13) === e)
        break;
      x.push(x.shift());
    } catch {
      x.push(x.shift());
    }
})(jn, 983084);
function fa(n, e, t, x) {
  return t * n / x + e;
}
function pa(n, e, t, x) {
  return t * (n /= x) * n + e;
}
function ga(n, e, t, x) {
  return -t * (n /= x) * (n - 2) + e;
}
function ba(n, e, t, x) {
  return (n /= x / 2) < 1 ? t / 2 * n * n + e : -t / 2 * (--n * (n - 2) - 1) + e;
}
function ya(n, e, t, x) {
  return -t * Math.cos(n / x * (Math.PI / 2)) + t + e;
}
function _a(n, e, t, x) {
  return t * Math[Wt(195)](n / x * (Math.PI / 2)) + e;
}
function ma(n, e, t, x) {
  const s = Wt;
  return -t / 2 * (Math[s(199)](Math.PI * n / x) - 1) + e;
}
function Ia(n, e, t, x) {
  return n == 0 ? e : t * Math.pow(2, 10 * (n / x - 1)) + e;
}
function jn() {
  const n = ["cancelAll", "17538498jvDieG", "96MMhWvN", "indexOf", "9727890LbNLQz", "effect", "isArray", "filter", "remove", "length", "play", "8536sxwaZy", "stepAction", "timeline", "set", "delay", "duration", "reverse", "385903VQssgj", "slice", "update", "pow", "idle", "6EBtuHP", "system", "784221wbVXpL", "11qqaKYz", "isPause", "abs", "paused", "continue", "times", "sin", "finished", "asin", "onUpdate", "cos", "running", "animations", "playState", "52956ADWNPt", "13273TiGopM", "2487RMgRAl", "tick", "6489845XZgASu", "assign", "alternate-reverse", "direction", "cancel", "resolve", "delayed", "now", "number", "startTime", "2qDYLeO", "promise"];
  return jn = function() {
    return n;
  }, jn();
}
function wa(n, e, t, x) {
  const s = Wt;
  return n == 0 ? e : n == x ? e + t : (n /= x / 2) < 1 ? t / 2 * Math[s(184)](2, 10 * (n - 1)) + e : t / 2 * (-Math.pow(2, -10 * --n) + 2) + e;
}
function va(n, e, t, x) {
  return -t * (Math.sqrt(1 - (n /= x) * n) - 1) + e;
}
function ka(n, e, t, x) {
  return t * Math.sqrt(1 - (n = n / x - 1) * n) + e;
}
function Sa(n, e, t, x) {
  return (n /= x / 2) < 1 ? -t / 2 * (Math.sqrt(1 - n * n) - 1) + e : t / 2 * (Math.sqrt(1 - (n -= 2) * n) + 1) + e;
}
function Pa(n, e, t, x) {
  return t * (n /= x) * n * n + e;
}
function Oa(n, e, t, x) {
  return t * ((n = n / x - 1) * n * n + 1) + e;
}
function Ca(n, e, t, x) {
  return (n /= x / 2) < 1 ? t / 2 * n * n * n + e : t / 2 * ((n -= 2) * n * n + 2) + e;
}
function Ea(n, e, t, x) {
  return t * (n /= x) * n * n * n + e;
}
function La(n, e, t, x) {
  return -t * ((n = n / x - 1) * n * n * n - 1) + e;
}
function Ta(n, e, t, x) {
  return (n /= x / 2) < 1 ? t / 2 * n * n * n * n + e : -t / 2 * ((n -= 2) * n * n * n - 2) + e;
}
function Ma(n, e, t, x) {
  return t * (n /= x) * n * n * n * n + e;
}
function Da(n, e, t, x) {
  return t * ((n = n / x - 1) * n * n * n * n + 1) + e;
}
function Aa(n, e, t, x) {
  return (n /= x / 2) < 1 ? t / 2 * n * n * n * n * n + e : t / 2 * ((n -= 2) * n * n * n * n + 2) + e;
}
function Ba(n, e, t, x) {
  const s = Wt;
  var o = 1.70158, i = 0, r = t;
  if (n == 0)
    return e;
  if ((n /= x) == 1)
    return e + t;
  if (i || (i = x * 0.3), r < Math[s(191)](t)) {
    r = t;
    var o = i / 4;
  } else
    var o = i / (2 * Math.PI) * Math.asin(t / r);
  return -(r * Math.pow(2, 10 * (n -= 1)) * Math[s(195)]((n * x - o) * (2 * Math.PI) / i)) + e;
}
function Na(n, e, t, x) {
  var r = 1.70158, s = 0, i = t;
  if (n == 0)
    return e;
  if ((n /= x) == 1)
    return e + t;
  if (s || (s = x * 0.3), i < Math.abs(t)) {
    i = t;
    var r = s / 4;
  } else
    var r = s / (2 * Math.PI) * Math.asin(t / i);
  return i * Math.pow(2, -10 * n) * Math.sin((n * x - r) * (2 * Math.PI) / s) + t + e;
}
function ja(n, e, t, x) {
  const s = Wt;
  var o = 1.70158, i = 0, r = t;
  if (n == 0)
    return e;
  if ((n /= x / 2) == 2)
    return e + t;
  if (i || (i = x * (0.3 * 1.5)), r < Math.abs(t)) {
    r = t;
    var o = i / 4;
  } else
    var o = i / (2 * Math.PI) * Math[s(197)](t / r);
  return n < 1 ? -0.5 * (r * Math.pow(2, 10 * (n -= 1)) * Math[s(195)]((n * x - o) * (2 * Math.PI) / i)) + e : r * Math.pow(2, -10 * (n -= 1)) * Math.sin((n * x - o) * (2 * Math.PI) / i) * 0.5 + t + e;
}
function za(n, e, t, x, s) {
  return s == null && (s = 1.70158), t * (n /= x) * n * ((s + 1) * n - s) + e;
}
function Ra(n, e, t, x, s) {
  return s == null && (s = 1.70158), t * ((n = n / x - 1) * n * ((s + 1) * n + s) + 1) + e;
}
function Wa(n, e, t, x, s) {
  return s == null && (s = 1.70158), (n /= x / 2) < 1 ? t / 2 * (n * n * (((s *= 1.525) + 1) * n - s)) + e : t / 2 * ((n -= 2) * n * (((s *= 1.525) + 1) * n + s) + 2) + e;
}
function Wt(n, e) {
  const t = jn();
  return Wt = function(x, s) {
    return x = x - 148, t[x];
  }, Wt(n, e);
}
function jr(n, e, t, x) {
  return t - Pi(x - n, 0, t, x) + e;
}
function Pi(n, e, t, x) {
  return (n /= x) < 1 / 2.75 ? t * (7.5625 * n * n) + e : n < 2 / 2.75 ? t * (7.5625 * (n -= 1.5 / 2.75) * n + 0.75) + e : n < 2.5 / 2.75 ? t * (7.5625 * (n -= 2.25 / 2.75) * n + 0.9375) + e : t * (7.5625 * (n -= 2.625 / 2.75) * n + 0.984375) + e;
}
function Ha(n, e, t, x) {
  return n < x / 2 ? jr(n * 2, 0, t, x) * 0.5 + e : Pi(n * 2 - x, 0, t, x) * 0.5 + t * 0.5 + e;
}
let Fa = { easeLinear: fa, easeInQuad: pa, easeOutQuad: ga, easeInOutQuad: ba, easeInSine: ya, easeOutSine: _a, easeInOutSine: ma, easeInExpo: Ia, easeInOutExpo: wa, easeInCirc: va, easeOutCirc: ka, easeInOutCirc: Sa, easeInCubic: Pa, easeOutCubic: Oa, easeInOutCubic: Ca, easeInQuart: Ea, easeOutQuart: La, easeInOutQuart: Ta, easeInQuint: Ma, easeOutQuint: Da, easeInOutQuint: Aa, easeInElastic: Ba, easeOutElastic: Na, easeInOutElastic: ja, easeInBack: za, easeOutBack: Ra, easeInOutBack: Wa, easeInBounce: jr, easeOutBounce: Pi, easeInOutBounce: Ha };
class zr {
  constructor(e, t, x, s) {
    const i = Wt;
    this[i(179)] = 1e3, this.delay = 0, this.direction = "normal", this.fillMode = "none", this.playState = i(185), this.isPause = ![], this.finished = ![], this.delayed = ![], this.times = 1, this.playedTimes = 0, this[i(168)] = "easeLinear", this.from = e, this.to = t, x != null && (this[i(179)] = x), this[i(183)] = s;
  }
  [F(177)](e, t, x, s) {
    const i = F;
    return this.from = e, this.to = t, this.duration = x, this[i(183)] = s, this;
  }
  setFrom(e) {
    return this.from = e, this;
  }
  setTo(e) {
    return this.to = e, this;
  }
  setAttr(e) {
    return Object[F(152)](this, e), this;
  }
  [F(198)](e) {
    const t = F;
    return this[t(183)] = e, this;
  }
  [F(155)]() {
    const e = F;
    return this.system && this.system.remove(this), this.reject && (this.reject(), this.reject = null), this[e(202)] = "finished", this;
  }
  pause() {
    const e = F;
    return this[e(202)] = e(192), this.isPause = !![], this;
  }
  [F(193)]() {
    const e = F;
    return this.startTime = Date.now() - this.currentTime, this.playState = "running", this[e(190)] = ![], this;
  }
  tick(e) {
    const t = F;
    if (this.playState != "running")
      return ![];
    let x = e - this[t(160)];
    return this.currentTime = x, x >= this.duration ? (this.playState = t(196), this.system.remove(this), this[t(175)](this.duration), this.playedTimes < this[t(194)] ? this[t(173)]() : (this.resolve(), this[t(156)] = null, this.onEnd && this.onEnd())) : this[t(175)](x), !![];
  }
  play() {
    const e = F;
    let t = this;
    this[e(187)].add(this), this.playedTimes++, this.isPause = ![], this.delay != 0 && this[e(157)] == ![] ? (setTimeout(function() {
      t.startTime = Date.now(), t.playState = "running";
    }, this[e(178)]), t.delayed = !![]) : (t.startTime = Date[e(158)](), t.playState = e(200));
    const x = this;
    let s = this._getTickAction();
    this.stepAction = s;
    let i = this.promise;
    return i == null && (i = new Promise(function(r, o) {
      x[e(156)] == null && (x.resolve = r, x.reject = o);
    }), this.promise = this[e(162)]), i.catch((r) => {
    });
  }
  _getTickAction() {
    const e = F;
    let t = this.effect, x = this.from, s = this.to, i = this.duration, r = this[e(183)], o = x, a = s;
    if (typeof x == "number" && (o = [x], a = [s]), this.direction == e(180) || this.direction == e(153)) {
      let S = o;
      o = a, a = S;
    }
    let c = o[0];
    const l = Array[e(169)](x), h = typeof c == e(159), d = c.x != null || c.y != null;
    let p = o[e(182)](), b, _ = Fa[t], I = this.direction == "alternate" || this[e(154)] == e(153), g = this, k = this[e(179)] * 0.5;
    if (h)
      b = function(S) {
        let E = S;
        I && (S > k ? E = g.duration * 2 - E * 2 : E = S * 2);
        for (let A = 0; A < o.length; A++) {
          const $t = o[A], Ht = a[A], ue = Ht - $t;
          if (ue == 0)
            p[A] = $t;
          else {
            let de = _(E, $t, ue, i);
            p[A] = de;
          }
        }
        r(l ? p : p[0]);
      };
    else if (d)
      b = function(S) {
        for (let E = 0; E < o.length; E++) {
          const A = o[E], $t = a[E], Ht = $t.x - A.x, ue = $t.y - A.y;
          let de = { x: A.x, y: A.y };
          Ht != 0 && (de.x = _(S, A.x, Ht, i)), ue != 0 && (de.y = _(S, A.y, ue, i)), p[E] = de;
        }
        r(l ? p : p[0]);
      };
    else
      throw new Error("value format error.");
    return b;
  }
}
class Rr {
  constructor() {
    const e = F;
    this.animations = [], this[e(176)] = { begin: 17224416e5, end: Date.now() };
  }
  add(e) {
    const t = F;
    this.animations[t(166)](e) == -1 && this.animations.push(e);
  }
  [F(171)](e) {
    const t = F;
    z.remove(this[t(201)], e);
  }
  [F(163)]() {
    const e = F;
    for (let t = 0; t < this[e(201)].length; t++)
      this.animations[t][e(155)]();
    this[e(201)][e(172)] = 0;
  }
  [F(150)](e) {
    const t = F;
    let x = ![];
    for (let s = 0; s < this[t(201)][t(172)]; s++)
      this.animations[s][t(150)](e) && x == ![] && (x = !![]);
    return this[t(201)] = this.animations[t(170)]((s) => s[t(202)] != t(196)), x;
  }
  anime(e) {
    e.duration == null && (e.duration = 1e3);
    let t = new zr();
    return t.system = this, t.setAttr(e), t;
  }
}
const pe = re;
(function(n, e) {
  const t = re, x = n();
  for (; []; )
    try {
      if (-parseInt(t(466)) / 1 * (parseInt(t(463)) / 2) + parseInt(t(449)) / 3 + -parseInt(t(453)) / 4 + parseInt(t(464)) / 5 * (parseInt(t(470)) / 6) + parseInt(t(448)) / 7 + -parseInt(t(458)) / 8 + -parseInt(t(457)) / 9 === e)
        break;
      x.push(x.shift());
    } catch {
      x.push(x.shift());
    }
})(zn, 867683);
function re(n, e) {
  const t = zn();
  return re = function(x, s) {
    return x = x - 444, t[x];
  }, re(n, e);
}
function zn() {
  const n = ["update", "keys", "10zyisjc", "517765ZlsJXj", "length", "112514WPaTQE", "forEach", "stage", "addTheme", "78ERHWcy", "start", "fromJSON", "beginArrow", "_computedStyle", "endArrow", "themes", "selectedStyle", "1559362qauFPg", "3259908eWOBpS", "getComputedStyle", "defStyles", "currentTheme", "2502576zjzaaY", "parse", "assign", "setTheme", "2133837cTkpCb", "2900808LTmLyC", "defClass", "parent"];
  return zn = function() {
    return n;
  }, zn();
}
class Wr {
  constructor(e) {
    const t = re;
    this.themes = {}, this[t(451)] = {}, this[t(447)] = ve.getStyle("SelectedStyle"), this[t(468)] = e, this.addTheme(ve), this.addTheme(Pr), this.setTheme(ve.name);
  }
  addTheme(e) {
    const t = re;
    this[t(446)][e.name] = e;
  }
  getTheme(e) {
    return this.themes[e];
  }
  customStyleToJSON(e) {
    const t = re;
    let x = JSON[t(454)](JSON.stringify(this.themes));
    delete x.DefaultLight, delete x.DefaultDark;
    let s = {}, i = { themeName: this.currentTheme.name, themes: x, styles: s }, r = Object[t(462)](this.defStyles);
    for (let o = 0; o < r[t(465)]; o++) {
      let a = r[o], c = this.defStyles[a], l = c.toJSON(e);
      s[a] = l;
    }
    return i;
  }
  fromJson(e) {
    const t = re;
    let x = e.CustomStyle;
    if (x == null)
      return;
    let s = x[t(446)], i = x.styles || {};
    if (s != null) {
      let a = Object.keys(s);
      for (let c = 0; c < a.length; c++) {
        let l = a[c], h = s[l], d = new g0(l, h.content);
        this[t(469)](d);
      }
    }
    let r = e.Resources || {};
    this.defStyles = {};
    let o = Object[t(462)](i).filter((a) => a.startsWith("."));
    for (let a = 0; a < o.length; a++) {
      let c = o[a], l = i[c];
      this.defStyles[c] = lt[t(472)](l, r);
    }
    x.themeName != null && this[t(456)](x.themeName);
  }
  [pe(459)](e, t) {
    const x = pe;
    if (t instanceof lt) {
      this[x(451)][e] = t;
      return;
    }
    let s = new lt();
    Object.assign(s, t), this.defStyles[e] = s, !e.startsWith(".") && this.markDirty();
  }
  removeClass(e) {
    delete this.defStyles[e], !e.startsWith(".") && this.markDirty();
  }
  getClass(e) {
    return this.defStyles[e];
  }
  markDirty() {
    const e = pe;
    this[e(468)].children.forEach((x) => {
      const s = e;
      x.style.dirty = !![], x.querySelectorAll()[s(467)]((i) => i.style.dirty = !![]);
    });
  }
  [pe(471)]() {
    this[pe(456)](this.currentTheme.name);
  }
  setTheme(e) {
    let t = this.getTheme(e);
    if (t == null)
      throw new Error("theme not exist.");
    this.currentTheme = t, this.markDirty(), this.stage.update();
  }
  [pe(450)](e) {
    return e._computedStyle;
  }
  computeStyle(e) {
    const t = pe;
    let x = this, s = {}, i = this[t(452)], r = e.className;
    e.parent instanceof R && (e === e[t(460)].label ? r = "LinkLabel" : (e === e.parent[t(473)] || e === e.parent[t(445)]) && (r = "LinkArrow"));
    let o = i.getStyle(r);
    o != null && Object[t(455)](s, o);
    let a = x.getClass(r);
    a != null && Object[t(455)](s, a);
    let c = e.classList;
    if (c.length > 0)
      for (let l = 0; l < c.length; l++) {
        const h = c[l];
        let d = x.getClass(h);
        d != null && Object[t(455)](s, d);
      }
    return Object.assign(s, e.style.getChangedProps()), e[t(444)][t(461)](s), e._afterStyleComputed(), e[t(444)];
  }
  defTheme(e, t) {
    let x = this.getTheme(e);
    if (x == null)
      throw new Error("theme not exist:" + e);
    let s = x.copy(t);
    return this.addTheme(s), s;
  }
}
const Ks = Ee;
(function(n, e) {
  const t = Ee, x = n();
  for (; []; )
    try {
      if (parseInt(t(391)) / 1 * (-parseInt(t(375)) / 2) + parseInt(t(398)) / 3 + -parseInt(t(393)) / 4 + -parseInt(t(369)) / 5 + parseInt(t(397)) / 6 + -parseInt(t(385)) / 7 + parseInt(t(376)) / 8 * (parseInt(t(381)) / 9) === e)
        break;
      x.push(x.shift());
    } catch {
      x.push(x.shift());
    }
})(Rn, 598214);
function Rn() {
  const n = ["width", "_tickLayer", "3238536rlmjNT", "2210700CKslUq", "_obb", "_renderLayerBefore", "mouseX", "style", "parent", "styleSystem", "requestTimer", "renderTimes", "_isMouseInAABB", "4014305xvUTwu", "getViewportRectInLayer", "currentTime", "aabb", "cuttingHide", "height", "112630ecOnrV", "405472vTPVqA", "isLink", "_isOutOfViewport", "isMouseInObjectAABB", "timeline", "369XJJSJg", "push", "length", "displayList", "2206771SMBVtr", "dirty", "painted", "_requestReapint", "render", "_frames", "15DlftQF", "localView", "3174588fZaYoN", "visible"];
  return Rn = function() {
    return n;
  }, Rn();
}
function Ee(n, e) {
  const t = Rn();
  return Ee = function(x, s) {
    return x = x - 364, t[x];
  }, Ee(n, e);
}
class Ya {
  constructor(e) {
    this.timeline = { currentTime: Date.now() }, this.stage = e;
  }
  _renderLayerBefore(e) {
    const t = Ee;
    e.style.dirty && !(e instanceof Ys) && this.stage[t(365)].computeStyle(e), e._isMatrixDirty() && e.updateMatrix(), e.clearMatrixDirtyMark(), e.style.dirty = ![];
    let x = C.flatten(e.children, null);
    e.flattenList = x, e[t(384)].length = 0;
    for (let s = 0; s < x[t(383)]; s++) {
      let i = x[s];
      i.style.dirty && this.stage.styleSystem.computeStyle(i), i._isMatrixDirty() && i.updateMatrix(), i._afterUpdate(), i.clearMatrixDirtyMark(), i[t(402)][t(386)] = ![], i.painted = ![], i.isPointOn = ![], i[t(378)] = this.isOutOfViewPort(i, e);
      let r = i[t(394)] && i[t(364)]._needPaint;
      i._needPaint = r, i._isMouseInAABB = ![], r && !i[t(378)] && (i[t(368)] = this.isMouseInObjectAABB(i, e));
    }
    for (let s = 0; s < x[t(383)]; s++) {
      let i = x[s];
      (i._isMatrixDirty() || i.parent[t(377)]) && (i.updateMatrix(), i._afterUpdate(), i.clearMatrixDirtyMark(), i._isOutOfViewport = this.isOutOfViewPort(i, e), i[t(368)] = ![], i._needPaint && !i[t(378)] && (i[t(368)] = this[t(379)](i, e))), i._needPaint && !i._isOutOfViewport && i._cameraVisible && e.displayList[t(382)](i);
    }
  }
  isOutOfViewPort(e, t) {
    const x = Ee;
    if (t[x(373)] == ![])
      return ![];
    let i = t[x(370)](), r = e[x(399)];
    return r[x(372)] == null ? ![] : !i.isIntersectRect(r.aabb);
  }
  isMouseInObjectAABB(e, t) {
    const x = Ee, s = t.stage;
    if (s.inputSystem.x < 0 || s.inputSystem.y < 0)
      return ![];
    let i = e._obb.aabb.clone();
    return e instanceof R && (i = i.clone(), i.x -= 2, i.y -= 2, i[x(395)] += 4, i[x(374)] += 4), i.contains(t[x(401)], t.mouseY);
  }
  [Ks(396)](e, t) {
    const x = Ks;
    let s = e[x(389)];
    if (!(e.visible == ![] || e.destroyed || s.stoped || s.destoryed == !![])) {
      if (e[x(390)] == 0) {
        (e._requestReapint == !![] || C._anyMatrixOrStyleDirty(e)) && (e[x(388)] = ![], this._renderLayerBefore(e), s.renderLayer(e), e[x(367)]++);
        return;
      }
      this[x(400)](e), s.renderLayer(e), e[x(367)]++;
    }
  }
  pause() {
    cancelAnimationFrame(this.requestTimer);
  }
  start() {
    const e = Ks, t = this.stage, x = this, s = t.handlerLayer, i = t.children, r = this.timeline, o = t.animationSystem, a = t.behaviourSystem;
    {
      let h = t.animationSystem[e(380)].begin;
      this.timeline[e(371)] >= h && (t[e(392)].mode = "painted");
    }
    const c = t.localView.mode == e(387);
    function l() {
      const h = e;
      if (t.destoryed)
        return;
      let d = Date.now();
      r.currentTime = d, a.tick(d);
      let p = ![];
      !c && (p = o.tick(d)), p == !![] && (s._requestReapint = !![]), x._tickLayer(s, d);
      for (let b = 0; b < i.length; b++) {
        let _ = i[b];
        p && (_._requestReapint = !![]), _.onUpdate != null && _.onUpdate(), x[h(396)](_, d);
      }
      x[h(366)] = requestAnimationFrame(l);
    }
    l();
  }
}
const He = c0;
(function(n, e) {
  const t = c0, x = n();
  for (; []; )
    try {
      if (-parseInt(t(227)) / 1 + -parseInt(t(232)) / 2 * (-parseInt(t(229)) / 3) + parseInt(t(236)) / 4 * (-parseInt(t(221)) / 5) + parseInt(t(234)) / 6 + -parseInt(t(237)) / 7 + parseInt(t(223)) / 8 + parseInt(t(216)) / 9 === e)
        break;
      x.push(x.shift());
    } catch {
      x.push(x.shift());
    }
})(Wn, 247612);
function c0(n, e) {
  const t = Wn();
  return c0 = function(x, s) {
    return x = x - 216, t[x];
  }, c0(n, e);
}
function Wn() {
  const n = ["5XQHAKA", "MouseEvents", "137000oJubGQ", "' alt='from canvas'/>", "aabb", "toDataURL", "271739mCTifM", "translate", "944061Ffdwjk", "render", "href", "2GbfDnW", "_exportPaint", "2920440gcwOxQ", "<img src='", "1472916EszDAy", "138089gvgbjC", "798795aMqZZg", "max", "setSize", "about:blank", "click"];
  return Wn = function() {
    return n;
  }, Wn();
}
class Xa {
  constructor(e) {
    const t = c0;
    this.stage = e, this[t(230)] = new Nr(e);
  }
  [He(226)](e) {
    const t = He;
    let x = Array.isArray(e) ? e : [e];
    return this[t(233)](x), this.render.toDataURL();
  }
  toImage(e) {
    let t = this.toDataURL(e), x = new Image();
    return x.src = t, x;
  }
  saveAsLocalImage(e, t) {
    let s = this[He(226)](e);
    t == null && (t = "jtopo_" + (/* @__PURE__ */ new Date()).getTime() + ".png"), this.saveDataAsFile(s, t);
  }
  saveImageInfo(e) {
    const t = He;
    let x = this.toDataURL(e);
    window.open(t(219)).document.write(t(235) + x + t(224));
  }
  download(e, t) {
    const x = new File([t], e, { type: "text/json" });
    function s(i) {
      const r = c0, o = document.createElement("a"), a = URL.createObjectURL(i);
      o.href = a, o.download = i.name, document.body.appendChild(o), o[r(220)](), document.body.removeChild(o), URL.revokeObjectURL(a);
    }
    s(x);
  }
  _exportPaint(e) {
    const t = He;
    let x = this[t(230)], s = e.map((a) => {
      const c = t;
      return a instanceof pt ? a.toStageRect(a.getExportAABB()) : a._obb[c(225)];
    }), i = j.unionRects(s), r = Math[t(217)](1, i.width), o = Math.max(1, i.height);
    x[t(218)](r, o), x.context.save(), x.context[t(228)](-i.x, -i.y), e.forEach(function(a) {
      x.exportPaintObjects([a]);
    }), x.context.restore();
  }
  saveDataAsFile(e, t) {
    const x = He;
    let s = document.createElementNS("http://www.w3.org/1999/xhtml", "a");
    s[x(231)] = e, s.download = t;
    let i = document.createEvent(x(222));
    i.initMouseEvent("click", !![], ![], window, 0, 0, 0, 0, 0, ![], ![], ![], ![], 0, null), s.dispatchEvent(i);
  }
}
(function(n, e) {
  for (var t = ui, x = n(); []; )
    try {
      var s = parseInt(t(284)) / 1 + parseInt(t(288)) / 2 * (-parseInt(t(281)) / 3) + parseInt(t(283)) / 4 + parseInt(t(286)) / 5 + -parseInt(t(287)) / 6 + -parseInt(t(285)) / 7 * (parseInt(t(280)) / 8) + parseInt(t(289)) / 9 * (-parseInt(t(282)) / 10);
      if (s === e)
        break;
      x.push(x.shift());
    } catch {
      x.push(x.shift());
    }
})(Hn, 272430);
function Ua(n, e) {
  for (var t in e) {
    let x = e[t];
    Va(n, t, x);
  }
}
function ui(n, e) {
  var t = Hn();
  return ui = function(x, s) {
    x = x - 280;
    var i = t[x];
    return i;
  }, ui(n, e);
}
function Hn() {
  var n = ["8179NOmxAN", "112HNSQRZ", "2343395ReLtpw", "1646904zYISDr", "4bLKcvy", "408978psXVgI", "37304zeGFjL", "14673ZZlgQV", "10IacWNZ", "799552aCmurA"];
  return Hn = function() {
    return n;
  }, Hn();
}
function Va(n, e, t) {
  t.writable == null && (t.writable = !![]), t.enumerable == null && (t.enumerable = !![]), Object.defineProperty(n, e, t);
}
function Fn(n, e) {
  const t = Yn();
  return Fn = function(x, s) {
    return x = x - 107, t[x];
  }, Fn(n, e);
}
const $ = Fn;
(function(n, e) {
  const t = Fn, x = n();
  for (; []; )
    try {
      if (parseInt(t(130)) / 1 + -parseInt(t(107)) / 2 * (-parseInt(t(113)) / 3) + -parseInt(t(132)) / 4 * (parseInt(t(118)) / 5) + parseInt(t(115)) / 6 + -parseInt(t(127)) / 7 * (parseInt(t(131)) / 8) + -parseInt(t(109)) / 9 + parseInt(t(119)) / 10 === e)
        break;
      x.push(x.shift());
    } catch {
      x.push(x.shift());
    }
})(Yn, 837018);
var Ja = Object[$(133)], Ga = Object.getOwnPropertyDescriptor, Ri = (n, e, t, x) => {
  const s = $;
  for (var i = x > 1 ? void 0 : x ? Ga(e, t) : e, r = n[s(112)] - 1, o; r >= 0; r--)
    (o = n[r]) && (i = (x ? o(e, t, i) : o(i)) || i);
  return x && i && Ja(e, t, i), i;
};
function Yn() {
  const n = ["aabb", "TextNode", "length", "6YCNgCZ", "localPoints", "4372032WtPNKd", "updateMatrix", "serializers", "5sPGmnx", "11389100bDRmYT", "textPosition", "_autoSize", "top", "bottom", "left", "_textHeight", "className", "337659LZbEsf", "pickType", "_calcTextPosition", "132970lFOQvY", "24rrCtox", "5653792kTLBDo", "defineProperty", "autoSize", "rotation", "height", "resizeToFitText", "760394dzFJcI", "textBaseline", "3291921EfMZTo"];
  return Yn = function() {
    return n;
  }, Yn();
}
class ce extends D {
  constructor(e, t = 0, x = 0, s = 1, i = 1, r = !![]) {
    super(e, t, x, s, i), this.autoDirection = !![], this._autoSize = !![], this.autoSize = r;
  }
  get autoSize() {
    return this[$(121)];
  }
  set [$(134)](e) {
    this._autoSize = e;
  }
  [$(116)]() {
    const e = $, t = this;
    if (t.autoDirection == !![]) {
      let x = t._getOriginRotation();
      x < -Math.PI / 2 || x > Math.PI / 2 ? t.rotation !== Math.PI && (t.rotation = Math.PI) : t[e(135)] !== 0 && (t.rotation = 0);
    }
    super.updateMatrix();
  }
  _updateText() {
    const e = $;
    this._calcTextSize(), this[e(121)] && this.resizeToFitText(), this._calcTextPosition();
  }
  [$(137)]() {
    const e = $;
    let x = this._computedStyle.calcGap();
    this.width = this._textWidth + x, this[e(136)] = this[e(125)] + x;
    let s = this._OBBPoints(), i = this._worldTransform.points(s), r = this._obb;
    r[e(114)] = s, r.points = i, r[e(110)] = qt.toAABB(i);
  }
  [$(129)]() {
    const e = $, t = this._computedStyle;
    let x = t.borderWidth || 0, s = (t.padding || 0) + (t.lineWidth | 0);
    return (t.textBaseline == e(123) && (t.textPosition == "lt" || t.textPosition == "ct" || t.textPosition == "rt") || t[e(108)] == e(122) && (t.textPosition == "lb" || t.textPosition == "cb" || t.textPosition == "rb") || t.textAlign == "right" && (t.textPosition == "lt" || t[e(120)] == "lm" || t.textPosition == "lb") || t.textAlign == e(124) && (t.textPosition == "rt" || t[e(120)] == "rm" || t.textPosition == "rb")) && (x = 0, s = 0), super[e(129)](x, s);
  }
}
Ri([u($(111))], ce.prototype, $(126), 2), Ri([u("rect")], ce.prototype, $(128), 2), Ua(ce.prototype, { serializers: { value: D.prototype[$(117)].concat([$(134), "autoDirection"]) } });
function Ne(n, e) {
  var t = Xn();
  return Ne = function(x, s) {
    x = x - 118;
    var i = t[x];
    return i;
  }, Ne(n, e);
}
var qa = Ne;
(function(n, e) {
  for (var t = Ne, x = n(); []; )
    try {
      var s = parseInt(t(130)) / 1 * (-parseInt(t(118)) / 2) + -parseInt(t(123)) / 3 * (parseInt(t(129)) / 4) + -parseInt(t(121)) / 5 + parseInt(t(122)) / 6 * (-parseInt(t(126)) / 7) + parseInt(t(128)) / 8 * (-parseInt(t(133)) / 9) + parseInt(t(120)) / 10 * (-parseInt(t(127)) / 11) + parseInt(t(131)) / 12;
      if (s === e)
        break;
      x.push(x.shift());
    } catch {
      x.push(x.shift());
    }
})(Xn, 310104);
var Ka = Object.defineProperty, Za = Object.getOwnPropertyDescriptor, Qa = (n, e, t, x) => {
  for (var s = Ne, i = x > 1 ? void 0 : x ? Za(e, t) : e, r = n[s(124)] - 1, o; r >= 0; r--)
    (o = n[r]) && (i = (x ? o(e, t, i) : o(i)) || i);
  return x && i && Ka(e, t, i), i;
};
function Xn() {
  var n = ["12dRrVNl", "152323AZIfVI", "33532836ldnqcf", "sin", "531pWJPhS", "4okKzbu", "prototype", "280uRgTtl", "1546230BquMPT", "12GuYhYy", "369987BdpLzK", "length", "width", "1926841konaPj", "144771fuHitx", "78832QapTby"];
  return Xn = function() {
    return n;
  }, Xn();
}
class Z0 extends D {
  constructor(e, t = 0, x = 0, s = 1, i = 1) {
    super(e, t, x, s, i), this.shape = M.Circle, this.setRadius(s / 2);
  }
  setRadius(e = 1) {
    var t = Ne;
    this[t(125)] = e * 2, this.height = e * 2;
  }
  getRadius() {
    return this.radius;
  }
  getPoint(e) {
    var t = Ne;
    let x = Math.max(this.width, this.height) * 0.5, s = e * (2 * Math.PI);
    return { x: this.x + x + x * Math.cos(s), y: this.y + x + x * Math[t(132)](s) };
  }
}
Qa([u("CircleNode")], Z0.prototype, "className", 2), Object.defineProperties(Z0[qa(119)], { radius: { get() {
  return Math.max(this.width, this.height) * 0.5;
}, set(n) {
  this.setRadius(n);
} } });
const H = Un;
function Un(n, e) {
  const t = Jn();
  return Un = function(x, s) {
    return x = x - 277, t[x];
  }, Un(n, e);
}
(function(n, e) {
  const t = Un, x = n();
  for (; []; )
    try {
      if (parseInt(t(284)) / 1 + parseInt(t(307)) / 2 * (-parseInt(t(300)) / 3) + parseInt(t(301)) / 4 * (-parseInt(t(290)) / 5) + parseInt(t(299)) / 6 + parseInt(t(289)) / 7 + -parseInt(t(304)) / 8 * (-parseInt(t(297)) / 9) + parseInt(t(303)) / 10 * (-parseInt(t(277)) / 11) === e)
        break;
      x.push(x.shift());
    } catch {
      x.push(x.shift());
    }
})(Jn, 724888);
var $a = Object.defineProperty, tc = Object[H(309)], m0 = (n, e, t, x) => {
  for (var s = x > 1 ? void 0 : x ? tc(e, t) : e, i = n.length - 1, r; i >= 0; i--)
    (r = n[i]) && (s = (x ? r(e, t, s) : r(s)) || s);
  return x && s && $a(e, t, s), s;
};
class se extends R {
  constructor(e, t, x, s, i) {
    super(e, t, x, s, i), this.absorb = 3;
  }
  setBeginOffsetGap(e) {
    const t = H;
    this[t(280)] = e, this.matrixDirty = !![];
  }
  [H(295)](e) {
    this.endOffsetGap = e, this.matrixDirty = !![];
  }
  [H(279)](e, t) {
    const x = H;
    let s = this[x(280)], i = this._calcFold1Vec(e, t), r = { x: e.x + i[0] * s, y: e.y + i[1] * s }, o = this[x(310)];
    return o && (r.x += o.x, r.y += o.y), r;
  }
  [H(285)](e, t) {
    let x = this.endOffsetGap, s = this._calcFold2Vec(e, t), i = { x: t.x + s[0] * x, y: t.y + s[1] * x }, r = this.fold2Offset;
    return r && (i.x += r.x, i.y += r.y), i;
  }
  _calcFold1Vec(e, t) {
    let x = hi(this.begin);
    if (x == null) {
      let s = 0, i = 0;
      t.x > e.x ? s = 1 : s = -1, x = [s, i];
    }
    return x;
  }
  [H(294)](e, t) {
    let x = hi(this.end);
    if (x == null) {
      let s = 0, i = -1;
      t.y > e.y ? i = -1 : i = 1, x = [s, i];
    }
    return x;
  }
  updatePoints() {
    const e = H, t = this[e(286)](), x = t[0], s = t[1];
    return this._calcPointsByAZ(x, s);
  }
  _calcPointsByAZ(e, t) {
    const x = H, s = this.absorb;
    let i = this._calcFold1Vec(e, t);
    if (i[0] == 0 && Math[x(281)](e.x - t.x) < s) {
      let d = (e.x + t.x) * 0.5;
      e.x = d, t.x = d;
    }
    if (i[1] == 0 && Math[x(281)](e.y - t.y) < s) {
      let d = (e.y + t.y) * 0.5;
      e.y = d, t.y = d;
    }
    let r = this[x(279)](e, t), o = this._calcFold2(e, t);
    const a = ec(this, e, t, r, o);
    let c = a[0], l = a[1];
    {
      if (T[x(308)](c, l, 0.5) == ![]) {
        const b = Math.abs(T[x(298)](c, l)).toFixed(6);
        this._preAngle != null && this._preAngle != b && (this.centerOffset = null), this._preAngle = b;
      }
      let p = this[x(305)];
      p && (c.x += p.x, c.y += p.y, l.x += p.x, l.y += p.y);
    }
    return [e, r, c, l, o, t];
  }
  _afterUpdateMatrix() {
    const e = H;
    if (super[e(291)](), this._needCalcOffset()) {
      let t = this.points[0], x = this.points[this[e(302)].length - 1], s = this.offsetPoints[0], i = this.offsetPoints[this.offsetPoints.length - 1];
      this.points = this._calcPointsByAZ(s, i), this[e(302)][0] = t, this.points[this.points.length - 1] = x;
    }
  }
  getMergedPoints() {
    return T.mergeClosestPoints(this.points);
  }
  setFold1Offset(e, t) {
    let x = this.fold1Offset;
    x == null && (x = { x: 0, y: 0 }, this.fold1Offset = x), kx(this.getK(0, 0.5)) ? (x.y = 0, t = 0) : (x.x = 0, e = 0), x.x += e, x.y += t, this.matrixDirty = !![];
  }
  setFold2Offset(e, t) {
    let s = this[H(282)];
    s == null && (s = { x: 0, y: 0 }, this.fold2Offset = s), kx(this.getK(4, 0.5)) ? (s.y = 0, t = 0) : (s.x = 0, e = 0), s.x += e, s.y += t, this.matrixDirty = !![];
  }
  setCenterOffset(e, t) {
    const x = H;
    let s = this[x(305)];
    s == null && (s = { x: 0, y: 0 }, this[x(305)] = s), kx(this.getK(2, 0.5)) ? (s.x = 0, e = 0) : (s.y = 0, t = 0), s.x += e, s.y += t, this.matrixDirty = !![];
  }
  resetOffset() {
    this.centerOffset = void 0, this.fold1Offset = null, this.fold2Offset = null, this.matrixDirty = !![];
  }
}
m0([u("AutoFoldLink")], se.prototype, "className", 2), m0([u(15)], se.prototype, "beginOffsetGap", 2), m0([u(15)], se[H(278)], "endOffsetGap", 2), m0([u(function() {
  const n = H;
  let e = this.getMergedPoints(), t = e.length;
  return t < 4 ? ["begin", "end"] : t == 4 || t == 5 ? [n(292), "end", n(293), "fold2"] : ["begin", n(296), n(293), n(288), "center"];
})], se.prototype, H(306), 2), m0([u(R.prototype[H(283)].concat(["beginOffsetGap", "endOffsetGap", H(310), "fold2Offset", "centerOffset"]))], se[H(278)], H(283), 2);
const ee = {};
ee[P.begin] = function() {
  return this.points[0];
}, ee[P.fold1] = function() {
  return this.points[1];
}, ee[P.mid1] = function() {
  return this.points[2];
}, ee[P.mid2] = function() {
  return this.points[3];
}, ee[P.fold2] = function() {
  return this.points[4];
}, ee[P[H(296)]] = function() {
  return this.points[5];
}, ee[P.center] = function() {
  return T.middle(this.points[2], this.points[3]);
}, se.prototype.DefaultPositions = ee;
function Vn(n, e) {
  return Math[H(281)](e[0]) > Math.abs(e[1]) ? n.x * Math.sign(e[0]) : n.y * Math.sign(e[1]);
}
function Wi(n, e, t) {
  let x = Vn(n, e);
  return Vn(t, e) - x;
}
function Zs(n, e, t, x) {
  let s = Vn(n, t), i = Vn(e, x), r = t[0] != 0;
  return s > i ? r ? { x: n.x, y: e.y } : { x: e.x, y: n.y } : r ? { x: e.x, y: n.y } : { x: n.x, y: e.y };
}
function ec(n, e, t, x, s) {
  const i = H, r = n._calcFold1Vec(e, t), o = n._calcFold2Vec(e, t), a = B.dot(r, o);
  if (a == 1) {
    let d = Zs(x, s, r, o);
    return [d, d];
  }
  if (a == -1) {
    const d = T[i(311)](x, s);
    let p = Zs(x, d, r, r), b = Zs(s, d, o, o);
    return [p, b];
  }
  let c = hn(e, x, t, s, !![]), l = Wi(e, r, c), h = Wi(t, o, c);
  if (l > 0 && h > 0)
    return [c, c];
  {
    const d = [-r[1], r[0]], p = { x: x.x + d[0], y: x.y + d[1] }, b = [-o[1], o[0]], _ = { x: s.x + b[0], y: s.y + b[1] };
    let I = hn(x, p, s, _, !![]);
    if (I != null)
      return [I, I];
  }
  throw new Error(i(287));
}
function Jn() {
  const n = ["_calcAZ", "assert failed getMid1AndMid2", "fold2", "9078881PqrjYt", "28225jlpIau", "_afterUpdateMatrix", "begin", "fold1", "_calcFold2Vec", "setEndOffsetGap", "end", "18YGptcN", "getAngle", "865212JOoofn", "112647EWXyYr", "556GhaSKD", "points", "10QTaplp", "3241520xgQvfU", "centerOffset", "getCtrlPoints", "70kiToXH", "looksSame", "getOwnPropertyDescriptor", "fold1Offset", "middle", "8552269yalBCD", "prototype", "_calcFold1", "beginOffsetGap", "abs", "fold2Offset", "serializers", "1349672kesyRn", "_calcFold2"];
  return Jn = function() {
    return n;
  }, Jn();
}
const St = qn;
(function(n, e) {
  const t = qn, x = n();
  for (; []; )
    try {
      if (parseInt(t(109)) / 1 + parseInt(t(112)) / 2 + parseInt(t(118)) / 3 + -parseInt(t(110)) / 4 * (parseInt(t(116)) / 5) + parseInt(t(117)) / 6 + parseInt(t(113)) / 7 + -parseInt(t(115)) / 8 === e)
        break;
      x.push(x.shift());
    } catch {
      x.push(x.shift());
    }
})(Gn, 160259);
var xc = Object.defineProperty, nc = Object.getOwnPropertyDescriptor, px = (n, e, t, x) => {
  for (var s = x > 1 ? void 0 : x ? nc(e, t) : e, i = n.length - 1, r; i >= 0; i--)
    (r = n[i]) && (s = (x ? r(e, t, s) : r(s)) || s);
  return x && s && xc(e, t, s), s;
};
function Gn() {
  const n = ["getFold2", "428876QNffAo", "784882KXculH", "DefaultPositions", "2977312fAJSbO", "50olQuwF", "307020qTvcxU", "595968FaNfvl", "fold2", "serializers", "direction", "points", "prototype", "endArrow", "getPoints", "108063WcFQly", "60812BciNMV"];
  return Gn = function() {
    return n;
  }, Gn();
}
function qn(n, e) {
  const t = Gn();
  return qn = function(x, s) {
    return x = x - 109, t[x];
  }, qn(n, e);
}
class Ie extends R {
  constructor(e, t, x, s, i) {
    super(e, t, x, s, i);
  }
  getFold1(e, t) {
    let x = (t.y - e.y) / 2, s = (t.x - e.x) / 2;
    return this.direction == t0.horizontal ? { x: e.x + s, y: e.y } : { x: e.x, y: e.y + x };
  }
  [St(111)](e, t) {
    let x = (t.y - e.y) / 2, s = (t.x - e.x) / 2;
    return this.direction == t0.horizontal ? { x: t.x - s, y: t.y } : { x: t.x, y: t.y - x };
  }
  updatePoints() {
    const e = St, t = this._calcAZ(), x = t[0], s = t[1];
    let i = this.getFold1(x, s), r = this.getFold2(x, s), o = { x: (i.x + r.x) / 2, y: (i.y + r.y) / 2 };
    const a = [x, i, o, r, s];
    if (this[e(122)] = a, this[e(124)]) {
      let c = a.length - 2;
      this[e(124)].origin[0] = c;
    }
    return a;
  }
}
px([u("FlexionalLink")], Ie.prototype, "className", 2), px([u(R[St(123)][St(120)].concat([St(121), "offsetGap"]))], Ie[St(123)], "serializers", 2), px([u(t0.horizontal)], Ie.prototype, "direction", 2), px([u(44)], Ie.prototype, "offsetGap", 2);
const Fe = {};
Fe[P.begin] = function() {
  return this.getPoints()[0];
}, Fe[P.fold1] = function() {
  return this.getPoints()[1];
}, Fe[P.center] = function() {
  return this.getPoints()[2];
}, Fe[P[St(119)]] = function() {
  return this[St(125)]()[3];
}, Fe[P.end] = function() {
  return this[St(125)]()[4];
}, Ie[St(123)][St(114)] = Fe;
var jt = Kn;
function Kn(n, e) {
  var t = Zn();
  return Kn = function(x, s) {
    x = x - 147;
    var i = t[x];
    return i;
  }, Kn(n, e);
}
(function(n, e) {
  for (var t = Kn, x = n(); []; )
    try {
      var s = -parseInt(t(158)) / 1 * (-parseInt(t(155)) / 2) + parseInt(t(151)) / 3 + -parseInt(t(149)) / 4 * (-parseInt(t(164)) / 5) + -parseInt(t(159)) / 6 + -parseInt(t(165)) / 7 * (parseInt(t(152)) / 8) + -parseInt(t(157)) / 9 * (parseInt(t(156)) / 10) + -parseInt(t(153)) / 11;
      if (s === e)
        break;
      x.push(x.shift());
    } catch {
      x.push(x.shift());
    }
})(Zn, 529388);
var sc = Object[jt(147)], ic = Object.getOwnPropertyDescriptor, Hi = (n, e, t, x) => {
  for (var s = jt, i = x > 1 ? void 0 : x ? ic(e, t) : e, r = n[s(148)] - 1, o; r >= 0; r--)
    (o = n[r]) && (i = (x ? o(e, t, i) : o(i)) || i);
  return x && i && sc(e, t, i), i;
};
function Zn() {
  var n = ["20ibcapp", "1277339RubKxN", "defineProperty", "length", "961372KMeUMT", "prototype", "3039261hAZXBk", "8zkbNAN", "20514538CfvthI", "getPoints", "6UPQAtF", "98870tnFIna", "18cMQfaF", "227379CWLENc", "359994myMkkM", "horizontal", "DefaultPositions", "FoldLink", "end"];
  return Zn = function() {
    return n;
  }, Zn();
}
class Q0 extends R {
  constructor(e, t, x, s, i) {
    var r = jt;
    super(e, t, x, s, i), this.direction = r(160);
  }
  updatePoints() {
    const e = this._calcAZ(), t = e[0], x = e[1];
    let s;
    return t.x == x.x || t.y == x.y ? s = T.middle(t, x) : this.direction == t0.horizontal ? s = { x: x.x, y: t.y } : s = { x: t.x, y: x.y }, [t, s, x];
  }
}
Hi([u(jt(162))], Q0[jt(150)], "className", 2), Hi([u(R.prototype.serializers.concat(["direction"]))], Q0[jt(150)], "serializers", 2);
const gx = {};
gx[P.begin] = function() {
  return this.getPoints()[0];
}, gx[P[jt(163)]] = function() {
  var n = jt;
  return this[n(154)]()[2];
}, gx[P.center] = function() {
  return this.getPoints()[1];
}, Q0[jt(150)][jt(161)] = gx;
const ft = $0;
(function(n, e) {
  const t = $0, x = n();
  for (; []; )
    try {
      if (-parseInt(t(113)) / 1 + -parseInt(t(134)) / 2 * (parseInt(t(111)) / 3) + parseInt(t(118)) / 4 * (parseInt(t(131)) / 5) + parseInt(t(135)) / 6 + parseInt(t(119)) / 7 * (parseInt(t(121)) / 8) + -parseInt(t(136)) / 9 * (parseInt(t(110)) / 10) + parseInt(t(109)) / 11 === e)
        break;
      x.push(x.shift());
    } catch {
      x.push(x.shift());
    }
})(Qn, 670488);
function Qn() {
  const n = ["512NkGSme", "target", "addChild", "children", "unlink", "width", "resizeTo", "disconnect", "setXYButChildFixed", "draggable", "950lcvcNM", "setShape", "outLinks", "6mIhUXY", "2463288QHKbTc", "18FzKLfk", "mouseEnabled", "label", "forEach", "24501389dihyAG", "3594810ckmhZs", "1303311Qtljeg", "indexOf", "520258uaStWR", "createLabel", "polygon", "travel", "length", "10688suJUay", "7371yEDgUM", "connectable"];
  return Qn = function() {
    return n;
  }, Qn();
}
function $0(n, e) {
  const t = Qn();
  return $0 = function(x, s) {
    return x = x - 109, t[x];
  }, $0(n, e);
}
class Gt {
  static createPologyNode(e, t = 1, x = 1) {
    const s = $0;
    let i = new D();
    return i[s(132)](M[s(115)](e)), i[s(127)](t, x), i;
  }
  static getUnionRect(e) {
    let t = e[0].getRect();
    for (let x = 1; x < e.length; x++)
      t = j.union(t, e[x].getRect());
    return t;
  }
  static [ft(129)](e, t, x) {
    let s = e.children;
    e.x += t, e.y += x;
    for (let i = 0; i < s.length; i++) {
      const r = s[i];
      r instanceof D && (r.x -= t, r.y -= x);
    }
  }
  static sizeFitToChildren(e, t) {
    const x = ft;
    let s = e.getChildren();
    if (s.length == 0)
      return;
    let i = Gt.getUnionRect(s);
    t == null && (t = 0);
    let r = t * 2;
    e.resizeTo(i[x(126)] + r, i.height + r);
    let o = i.x + e[x(126)] / 2, a = i.y + e.height / 2;
    Gt[x(129)](e, o - t, a - t);
  }
  static translateObjectsCenterTo(e, t, x) {
    const s = ft;
    let i = { x: t, y: x }, r = [];
    r = r.concat(e);
    let o = Gt.getUnionRect(r), a = o.getCenter(), c = i.x - a.x, l = i.y - a.y;
    r[s(139)]((h) => {
      h.translateWith(c, l);
    });
  }
  static [ft(116)](e, t, x, s) {
    const i = ft;
    if (s == null)
      s = [];
    else if (z.hasChild(s, e))
      return null;
    if (t && t(e, x), s.push(e), e instanceof D) {
      let o = e.outLinks;
      if (o != null)
        for (var r = 0; r < o[i(117)]; r++) {
          let a = o[r];
          Gt.travel(a, t, e, s);
        }
    } else
      e instanceof R && e.end.isDisplayObjectTarget() && Gt[i(116)](e.end[i(122)], t, x, s);
    return s;
  }
}
class tx {
  static [ft(128)](e, t) {
    const x = ft;
    if (e instanceof R) {
      e[x(125)]();
      return;
    }
    let s = e.inLinks;
    s != null && (s.forEach((r) => {
      const o = x;
      r.parent != null && (t != null && t[o(112)](r) != -1 || r.setEnd(r.getEndPoint()));
    }), e.inLinks = []);
    let i = e[x(133)];
    i != null && (i[x(139)]((r) => {
      r.parent != null && (t != null && t.indexOf(r) != -1 || r.setBegin(r.getBeginPoint()));
    }), e[x(133)] = []);
  }
  static [ft(114)](e, t) {
    const x = ft;
    if (e.label == null) {
      const s = new ce(t);
      return s.editable = ![], s.draggable = ![], s[x(120)] = ![], s[x(137)] = ![], s.autoSize = !![], s.alignOriginToLink("cb", 0, 0.5), tx.asLabel(e, s), s;
    }
    return e.label.text = t, e.label;
  }
  static asLabel(e, t) {
    const x = ft;
    e.label != null && e.removeChild(e[x(138)]), e.label = t, e.children.indexOf(e.label) == -1 && e[x(123)](e.label);
    let s = tx.getMiddleOrigin(e);
    return t.setXYOnLink(s.segIndex, s.t), t;
  }
  static getMiddleOrigin(e) {
    let t = 0, x = 0.5;
    return e instanceof Q0 ? x = 1 : e instanceof Ie ? t = 1 : e instanceof se && (t = 2), { segIndex: t, t: x };
  }
  static createArrow(e, t = 10, x = 10) {
    const s = ft;
    let i = new D();
    return i.resizeTo(t, x), e == null ? i.setShape(M.Arrow) : i.setShape(M.fromPoints(e)), i.editable = ![], i[s(130)] = ![], i.connectable = ![], i.mouseEnabled = ![], i;
  }
  static asBeginArrow(e, t) {
    const x = ft;
    return e.beginArrow != null && e.removeChild(e.beginArrow), e.children[x(112)](t) == -1 && e.addChild(t), e.beginArrow = t, t;
  }
  static asEndArrow(e, t) {
    const x = ft;
    return e.endArrow != null && e.removeChild(e.endArrow), e[x(124)].indexOf(t) == -1 && e[x(123)](t), e.endArrow = t, t;
  }
}
const bx = at;
(function(n, e) {
  const t = at, x = n();
  for (; []; )
    try {
      if (-parseInt(t(510)) / 1 * (parseInt(t(506)) / 2) + -parseInt(t(519)) / 3 * (-parseInt(t(503)) / 4) + -parseInt(t(502)) / 5 + -parseInt(t(505)) / 6 + parseInt(t(509)) / 7 + parseInt(t(523)) / 8 * (-parseInt(t(530)) / 9) + parseInt(t(517)) / 10 * (parseInt(t(513)) / 11) === e)
        break;
      x.push(x.shift());
    } catch {
      x.push(x.shift());
    }
})($n, 399237);
function $n() {
  const n = ["2688511SjbyRB", "1TrviVT", "toImage", "setRadius", "2321XiKsnO", "anime", "lineWidth", "animationList", "67030SqvkpN", "remove", "141byvxtZ", "green", "center", "minHeight", "32LUljpU", "lineDash", "beginWidth", "width", "cos", "stage", "forEach", "549684KJkXHP", "draggable", "color", "css", "translateTo", "clockwise", "count", "red", "minWidth", "random", "height", "animationSystem", "waterLike", "662875NgXvzb", "6620KhGzhv", "colorFilter", "2883036jKQcgI", "1239138LgYpik", "easeInOutElastic", "radius"];
  return $n = function() {
    return n;
  }, $n();
}
class di {
  constructor(e, t) {
    this.objects = e, this.animationList = t;
  }
  remove() {
    const e = at;
    this.objects.forEach((t) => t[e(518)]()), this[e(516)].forEach((t, x) => {
      t.cancel();
    });
  }
  play() {
    const e = at;
    this.animationList[e(529)]((t, x) => {
      t.play();
    });
  }
}
function at(n, e) {
  const t = $n();
  return at = function(x, s) {
    return x = x - 498, t[x];
  }, at(n, e);
}
class Hr {
  constructor(e, t) {
    const x = at;
    this.stage = e, this[x(500)] = t;
  }
  xyToCenter(e, t = { x: 0, y: 0 }) {
    return this.lookAt(e, t);
  }
  lookAt(e, t = { x: 0, y: 0 }) {
    const x = at;
    let s = t.x || 0, i = t.y || 0;
    return this[x(500)][x(514)]({ from: [e.x, e.y], to: [-s, -i], update: (o) => {
      e.x = o[0], e.y = o[1];
    }, effect: x(507) });
  }
  flash(e, t = {}) {
    let x = t.times || 3, s = t.duration || 100;
    return this.animationSystem.anime({ from: [0], to: [1], update: (o) => {
      e.css({ globalAlpha: o[0] });
    }, times: x, effect: "easeOutBounce", duration: s });
  }
  expandScale(e, t = {}) {
    const x = at;
    let s = t.position || "center", i = t[x(525)] || 0, r = t.beginHeight || 0, o = this[x(500)], a = [i, r, e.x, e.y], c = [e.width, e.height, e.x, e.y];
    return s == "center" ? a = [i, r, e.x, e.y] : s == "lt" ? a = [i, r, e.x - e.width * 0.5, e.y - e.height * 0.5] : s == "rt" ? a = [i, r, e.x + e.width * 0.5, e.y - e.height * 0.5] : s == "lb" ? a = [i, r, e.x - e.width * 0.5, e.y + e[x(499)] * 0.5] : s == "rb" ? a = [i, r, e.x + e.width * 0.5, e.y + e.height * 0.5] : s == "ct" ? a = [e.width, r, e.x, e.y - e.height * 0.5] : s == "cb" ? a = [e.height, r, e.x, e.y + e.height * 0.5] : s == "lm" ? a = [i, e.height, e.x - e[x(526)] * 0.5, e.y] : s == "rm" && (a = [i, e[x(499)], e.x + e.width * 0.5, e.y]), o[x(514)]({ from: a, to: c, update: (h) => {
      e.scaleTo(h[0] / e.width, h[1] / e.height), e.translateTo(h[2], h[3]);
    }, effect: "easeOutCubic" });
  }
  unexpandScale(e, t = {}) {
    const x = at;
    let s = t.position || "center", i = t[x(538)] || 0, r = t[x(522)] || 0, o = this.animationSystem, a = [e.width, e[x(499)], e.x, e.y], c = [i, r, e.x, e.y];
    return s == x(521) ? c = [i, r, e.x, e.y] : s == "lt" ? c = [i, r, e.x - e.width * 0.5, e.y - e.height * 0.5] : s == "rt" ? c = [i, r, e.x + e.width * 0.5, e.y - e.height * 0.5] : s == "lb" ? c = [i, r, e.x - e.width * 0.5, e.y + e[x(499)] * 0.5] : s == "rb" ? c = [i, r, e.x + e.width * 0.5, e.y + e.height * 0.5] : s == "ct" ? c = [i, r, e.x, e.y - e.height * 0.5] : s == "cb" ? c = [i, r, e.x, e.y + e[x(499)] * 0.5] : s == "lm" ? c = [i, r, e.x - e.width * 0.5, e.y] : s == "rm" && (c = [i, r, e.x + e.width * 0.5, e.y]), o.anime({ from: a, to: c, update: (h) => {
      const d = x;
      e.scaleTo(h[0] / e.width, h[1] / e.height), e[d(534)](h[2], h[3]);
    }, effect: "easeOutCubic" });
  }
  flow(e, t = {}) {
    const x = at;
    let s = t.lineDash || e.style[x(524)] || [3, 2], i = t.direction || x(535), r = t.duration || 1e4, o = t.distance || 300, a = i == "clockwise" ? 1 : -1, c = this[x(500)];
    return e.css({ lineDash: s }), c.anime({ from: 0, to: o, update: (h) => {
      e.css({ lineDashOffset: -h * a });
    }, times: 1 / 0, duration: r });
  }
  rippling(e = {}) {
    const t = at;
    let x = e[t(508)] || 50, s = e[t(532)] || "rgba(128,128,128,0.8)", i = e[t(536)] || 3, r = e[t(515)] || 8, o = this[t(500)], a = [], c = new Z0(null, 0, 0);
    c.mouseEnabled = ![], c.setRadius(x);
    for (let b = 0; b < i; b++) {
      let _ = new Z0(null, 0, 0);
      _.mouseEnabled = ![], _.css("strokeStyle", s), _.setRadius(1), c.addChild(_);
    }
    let l = c.children, h = x / i, d = o.anime({ from: [1], to: [x], update: (b) => {
      const _ = t;
      let I = b[0];
      for (let g = 0; g < l.length; g++) {
        let k = l[g], S = I + g * h;
        S > x && (S = S % x);
        let E = S / x;
        k[_(512)](S), k[_(533)]({ lineWidth: E * r, globalAlpha: 0.1 });
      }
    }, times: 1 / 0, duration: 2e3 });
    return a.push(d), new di([c], a);
  }
  colorFilter(e, t) {
    const x = at;
    let s = this[x(528)].exportSystem[x(511)](e);
    s.onload = () => {
      s = zt.colorFilter(s, t), e.setImage(s, !![]);
    };
  }
  imageFilter(e, t) {
    e.getImage((x) => {
      const s = at;
      if (x == null)
        return;
      let i = zt[s(504)](x, t);
      e.setImage(i);
    });
  }
  linkMark(e, t = { color: bx(537) }) {
    const x = bx;
    let s = t.text || "❌️", i = new ce(s, 0, 0);
    i[x(531)] = ![], i.editable = ![], i.connectable = ![], i.css({ textPosition: "center", textBaseline: "middle", textAlign: "center", color: t[x(532)] || "red" }), t.font != null && i.css({ font: t.font });
    let r = tx.getMiddleOrigin(e);
    return i.setXYOnLink(r.segIndex, r.t), e.addChild(i), i;
  }
  [bx(501)](e, t = 60, x = 60) {
    const s = bx;
    let i = new n0(0, 0, 0, x), r = new D(null, 0, 0, t, x);
    e == null && (e = ["white", s(520), "rgb(0,87,55)"]), i.setColors([[0, e[0]], [0.5, e[1]], [1, e[2]]]);
    let o = this.animationSystem[s(514)]({ from: 0, to: 1, duration: 2500, update: (c) => {
      const l = s;
      c = c < 0 ? 0 : c, i.startX = Math[l(498)]() + Math[l(527)](c * 2 * Math.PI) * 10, i.startY = -10 + Math[l(527)](c * 2 * Math.PI) * 5, i.setColors([[0, e[0]], [0.2 * c, e[1]], [1, e[2]]]);
    } });
    return o.direction = "alternate", o.times = 1 / 0, r.css({ fillStyle: i }), new di([r], [o]);
  }
}
const mt = ex;
function ts() {
  const n = ["toString", "executeBehaviours", "stoped", "5085328gFZVfW", "11683wYiCVP", "get", "1337616yCUfiX", "map", "855626LjrPCi", "tick", "name", "regBehaviour", "221239QqIShh", "return ", "4184aHBPOE", "behaviourMap", "assign", "377205OcIgzJ", "2922zZMwnW", "push", "defBehaviour", "set", "1035sEGzCP", "update"];
  return ts = function() {
    return n;
  }, ts();
}
(function(n, e) {
  const t = ex, x = n();
  for (; []; )
    try {
      if (parseInt(t(429)) / 1 + parseInt(t(425)) / 2 + -parseInt(t(423)) / 3 + parseInt(t(420)) / 4 + parseInt(t(434)) / 5 + parseInt(t(435)) / 6 * (-parseInt(t(421)) / 7) + parseInt(t(431)) / 8 * (-parseInt(t(415)) / 9) === e)
        break;
      x.push(x.shift());
    } catch {
      x.push(x.shift());
    }
})(ts, 677005);
function ex(n, e) {
  const t = ts();
  return ex = function(x, s) {
    return x = x - 412, t[x];
  }, ex(n, e);
}
class rc {
  constructor(e) {
    const t = ex;
    this[t(424)] = /* @__PURE__ */ new Map(), this.argMap = /* @__PURE__ */ new WeakMap(), this[t(432)] = /* @__PURE__ */ new Map(), this[t(419)] = ![], this.stage = e;
  }
  [mt(426)](e) {
    const t = mt;
    if (this.stoped)
      return;
    let x = this[t(424)].keys();
    for (let s of x)
      this.executeBehaviours(s, "update");
  }
  [mt(413)](e, t) {
    const x = mt;
    let s = new es(e);
    return Object[x(433)](s, t), this[x(428)](s), s;
  }
  regBehaviour(e) {
    const t = mt;
    this.behaviourMap[t(414)](e.name, e);
  }
  addBehaviour(e, t, x) {
    const s = mt;
    let i = this[s(432)].get(t);
    if (i == null)
      throw new Error("behaviours not exist:" + t);
    let r = this.map.get(e);
    r == null ? (r = [], this.map.set(e, r), r[s(412)](i)) : r.indexOf(i) == -1 && r[s(412)](i), x != null && (r[t] = x), i.first(e, x);
  }
  removeBehaviour(e, t) {
    const x = mt;
    let s = this.map.get(e);
    if (s != null)
      for (let i = 0; i < s.length; i++) {
        let r = s[i];
        if (r[x(427)] == t) {
          z.remove(s, r);
          return;
        }
      }
  }
  [mt(418)](e, t) {
    const x = mt;
    let s = this.map[x(422)](e);
    if (s != null)
      for (let i = 0; i < s.length; i++) {
        let r = s[i];
        if (t == "update") {
          let o = s[r[x(427)]];
          if (r.update !== es.prototype.update && r[x(416)](e, o) == ![])
            return ![];
        }
      }
    return null;
  }
}
class es {
  constructor(e) {
    const t = mt;
    if (typeof e == "number" || !Number.isNaN(parseInt(e)))
      throw new Error("behaviour name cannot be number:" + e);
    this[t(427)] = e;
  }
  first(e, t) {
  }
  update(e, t) {
  }
  static fromJSON(e) {
    const t = mt;
    let x = new es(e.name);
    return x.first = new Function(t(430) + x.first)(), x.update = new Function(t(430) + x[t(416)])(), x;
  }
  toJSON() {
    const e = mt;
    return { name: this.name, first: this.first.toString(), update: this[e(416)][e(417)]() };
  }
}
const ge = Le;
(function(n, e) {
  const t = Le, x = n();
  for (; []; )
    try {
      if (parseInt(t(383)) / 1 * (parseInt(t(378)) / 2) + parseInt(t(395)) / 3 * (-parseInt(t(392)) / 4) + parseInt(t(380)) / 5 * (parseInt(t(389)) / 6) + parseInt(t(387)) / 7 + -parseInt(t(396)) / 8 + -parseInt(t(377)) / 9 + parseInt(t(391)) / 10 === e)
        break;
      x.push(x.shift());
    } catch {
      x.push(x.shift());
    }
})(xs, 212764);
function xs() {
  const n = ["text", "getRect", "1cbOFEp", "width", "translateTo", "translateWith", "778421ppNObP", ": 	", "56454JxtgUx", "object", "5291920hKxOgP", "225444yASRrC", "toString", "children", "6cuCOju", "3211352DHKqBj", "height", "flatten", "265797JSXJyA", "175632sXUxzL", "length", "15OFibtZ"];
  return xs = function() {
    return n;
  }, xs();
}
function Le(n, e) {
  const t = xs();
  return Le = function(x, s) {
    return x = x - 377, t[x];
  }, Le(n, e);
}
class Ze {
  constructor(e = 0, t = 0, x = 1, s = 1) {
    this.x = 0, this.y = 0, this.width = 1, this.height = 1, this.rect = new j(0, 0, 1, 1), this.children = [], this.object = null, this.x = e, this.y = t, this.width = x, this.height = s;
  }
  fromObject(e) {
    const t = Le;
    this.object = e, this.x = e.x, this.y = e.y, this[t(384)] = e[t(384)], this.height = e[t(397)];
  }
  setObject(e) {
    this.object = e;
  }
  getRect(e = ![]) {
    const t = Le;
    return this.rect.setTo(this.x, this.y, this.width, this[t(397)]), e ? j.union(this.rect, this.getChildrenRect(!![])) : this.rect;
  }
  getChildrenRect(e) {
    const t = Le;
    let x = this[t(394)], s = x[0].getRect(e);
    for (let i = 1; i < x.length; i++)
      s = j.union(s, x[i][t(382)](e));
    return s;
  }
  translateWith(e, t) {
    this.x += e, this.y += t;
  }
  [ge(385)](e, t) {
    this.x = e, this.y = t;
  }
  addChild(e) {
    e.parent = this, this.children.push(e);
  }
  translateWithRecursive(e, t) {
    const x = ge;
    this[x(386)](e, t);
    let s = this[x(394)];
    for (var i = 0; i < s.length; i++)
      s[i].translateWithRecursive(e, t);
  }
  flatten(e) {
    const t = ge;
    let x = [];
    for (var s = 0; s < this[t(394)].length; s++) {
      let i = this[t(394)][s];
      if ((e == null || e(i) == !![]) && (x.push(i), i.children && i[t(394)][t(379)] > 0)) {
        let r = Ze[t(398)](i.children, e);
        x = x.concat(r);
      }
    }
    return x;
  }
  [ge(393)]() {
    const e = ge;
    return this[e(390)][e(381)] + e(388) + Ze[e(398)](this[e(394)]).map((x) => x.object.text).join(",");
  }
  static getVNodeUnionRect(e) {
    const t = ge;
    let x = e[0].getRect();
    for (let s = 1; s < e.length; s++)
      x = j.union(x, e[s][t(382)]());
    return x;
  }
  static flatten(e, t) {
    const x = ge;
    let s = [];
    for (var i = 0; i < e.length; i++) {
      let r = e[i];
      if ((t == null || t(r) == !![]) && (s.push(r), r.children && r[x(394)].length > 0)) {
        let o = Ze.flatten(r.children, t);
        s = s.concat(o);
      }
    }
    return s;
  }
}
function l0(n, e) {
  const t = ns();
  return l0 = function(x, s) {
    return x = x - 466, t[x];
  }, l0(n, e);
}
function ns() {
  const n = ["map", "getRect", "180966IqRyHI", "getLeafs", "length", "forEach", "1155721jbUxeY", "805MJuTbG", "allObjects", "220624kMDgwg", "12162gqCWJX", "concat", "511160gFTfWN", "deep", "116538LElUAi", "translateWith", "97604XWzvaj", "root"];
  return ns = function() {
    return n;
  }, ns();
}
const I0 = l0;
(function(n, e) {
  const t = l0, x = n();
  for (; []; )
    try {
      if (parseInt(t(471)) / 1 + parseInt(t(481)) / 2 + parseInt(t(483)) / 3 + -parseInt(t(467)) / 4 + -parseInt(t(476)) / 5 * (parseInt(t(479)) / 6) + parseInt(t(475)) / 7 + -parseInt(t(478)) / 8 === e)
        break;
      x.push(x.shift());
    } catch {
      x.push(x.shift());
    }
})(ns, 262169);
class oc {
  constructor(e) {
    const t = l0;
    this[t(482)] = 0, this[t(468)] = e, this.descendants = e.flatten(), this.allVirtualNodes = [e][t(480)](this.descendants), this[t(477)] = this.allVirtualNodes[t(469)]((x) => x.object), this.indexData = [], this.index();
  }
  index() {
    let e = [];
    const t = this;
    function x(s, i) {
      const r = l0;
      t.deep < i && (t.deep = i);
      let o = s.children, a = e[i];
      a == null && (a = [], e[i] = a), a.push(s);
      for (var c = 0; c < o[r(473)]; c++)
        x(o[c], i + 1);
    }
    x(this.root, 0), this.indexData = e;
  }
  [I0(470)]() {
    const e = I0, t = this[e(468)].flatten();
    if (t[e(473)] == 0)
      throw new Error("getRect() in empty tree");
    let x = t[0].getRect();
    for (let s = 1; s < t.length; s++) {
      const i = t[s];
      x = j.union(x, i.getRect());
    }
    return x;
  }
  centerTo(e, t) {
    const x = I0, s = this.allVirtualNodes;
    let i = this[x(468)].getRect();
    s.forEach((c) => {
      i = j.union(i, c.getRect());
    });
    let r = i.getCenter(), o = e - r.x, a = t - r.y;
    return s.forEach((c) => {
      c[x(466)](o, a);
    }), this;
  }
  translateTo(e, t) {
    const x = I0, s = this.allVirtualNodes;
    let i = this[x(468)][x(470)]();
    s[x(474)]((a) => {
      i = j.union(i, a.getRect());
    });
    let r = e - i.x, o = t - i.y;
    return s.forEach((a) => {
      a[x(466)](r, o);
    }), this;
  }
  translateWith(e, t) {
    return this.allVirtualNodes.forEach((s) => {
      s.translateWith(e, t);
    }), this;
  }
  [I0(472)]() {
    return this.indexData[this.deep];
  }
}
const Yt = it;
(function(n, e) {
  const t = it, x = n();
  for (; []; )
    try {
      if (parseInt(t(481)) / 1 + -parseInt(t(492)) / 2 + -parseInt(t(500)) / 3 * (parseInt(t(489)) / 4) + parseInt(t(488)) / 5 * (-parseInt(t(478)) / 6) + parseInt(t(505)) / 7 * (-parseInt(t(473)) / 8) + parseInt(t(486)) / 9 + parseInt(t(504)) / 10 === e)
        break;
      x.push(x.shift());
    } catch {
      x.push(x.shift());
    }
})(ss, 963525);
class Qe {
  constructor() {
    const e = it;
    this[e(490)] = [], this[e(482)] = [];
  }
  getDegree() {
    return this.getInDegree() + this.getOutDegree();
  }
  getInDegree() {
    const e = it;
    return this.inputs[e(499)];
  }
  getOutDegree() {
    const e = it;
    return this[e(482)][e(499)];
  }
  getAdjacentList() {
    const e = it;
    let t = this[e(482)].map((s) => s.to), x = this.inputs.map((s) => s[e(485)]);
    return t[e(496)](x);
  }
}
function it(n, e) {
  const t = ss();
  return it = function(x, s) {
    return x = x - 473, t[x];
  }, it(n, e);
}
class fi {
  constructor(e, t) {
    const x = it;
    this[x(474)] = 0, this.from = e, this.to = t, e[x(482)][x(487)](this), t.inputs.push(this);
  }
  isLoop() {
    return this[it(485)] === this.to;
  }
  isAdjacent(e) {
    return this.from === e.from || this.from === e.to || this.to === e.from || this.to === e.to;
  }
}
function ss() {
  const n = ["getMinDegree", "has", "forEach", "28801260cuKQrx", "1029910TevFoA", "88WDEcmg", "weight", "filter", "getOrder", "edges", "2167446gnHNvu", "isTrace", "getDegree", "1922750UYMXkz", "outputs", "getAdjacentList", "vertexes", "from", "3967128DLNCwN", "push", "10iUpLks", "7588172voYPKO", "inputs", "hasDirection", "84376HEhArJ", "check", "slice", "getMaxDegreeVertext", "concat", "map", "depth", "length", "3mptHFK"];
  return ss = function() {
    return n;
  }, ss();
}
class ac {
  constructor(e) {
    this.vertexes = e;
  }
  isClose(e) {
    return ![];
  }
  isTrace(e) {
    return ![];
  }
  isCircuit(e) {
    const t = it;
    return this.isClose(e) && this[t(479)](e);
  }
  isTrack(e) {
    return ![];
  }
  isCycle(e) {
    return this.isClose(e) && this.isTrack(e);
  }
}
class xx {
  constructor(e, t) {
    const x = it;
    this[x(491)] = !![], this[x(484)] = e, this[x(477)] = t;
  }
  isZero() {
    const e = it;
    return this.vertexes[e(499)] > 0 && this.edges[e(499)] == 0;
  }
  isAlone() {
    return this.vertexes.length == 1 && this.edges.length == 0;
  }
  traverse(e, t = "depth", x = [], s = /* @__PURE__ */ new Set()) {
    const i = it;
    e == null && (e = this.vertexes[0]);
    let r = this;
    if (!s.has(e) && (x.push(e), s.add(e)), t == i(498))
      e.getAdjacentList().filter((a) => !s[i(502)](a)).map((a) => {
        !s[i(502)](a) && (x.push(a), s.add(a)), r.traverse(a, t, x, s);
      });
    else {
      let o = e[i(483)]()[i(475)]((a) => !s.has(a));
      o[i(497)]((a) => {
        x.push(a), s.add(a);
      }), o.map((a) => {
        r.traverse(a, t, x, s);
      });
    }
    return x;
  }
  [Yt(495)]() {
    const e = Yt;
    let t = this[e(484)][0];
    for (let x = 1; x < this[e(484)].length; x++) {
      const s = this.vertexes[x];
      s.getDegree() > t.getDegree() && (t = s);
    }
    return t;
  }
  [Yt(501)]() {
    const e = Yt;
    let t = this.vertexes[0].getDegree();
    for (let x = 1; x < this.vertexes.length; x++) {
      const s = this[e(484)][x];
      s.getDegree() < t && (t = s[e(480)]());
    }
    return t;
  }
  getPathList(e, t, x = /* @__PURE__ */ new Set()) {
    return [];
  }
  [Yt(476)]() {
    return this.vertexes.length;
  }
  isBridge() {
  }
  isSubGraph(e) {
  }
  isTree() {
    const e = Yt;
    return this.vertexes.length != this.edges.length + 1 ? ![] : this[e(484)].length == 1 ? !![] : this[e(484)][e(475)]((x) => x[e(480)]() == 1)[e(499)] > 0;
  }
  travelNext(e) {
    let t = [];
    function x(s) {
      const i = it;
      t[i(487)](s);
      let r = s.outputs.map((o) => o.to);
      for (let o = 0; o < r[i(499)]; o++) {
        let a = r[o];
        if (a === e)
          return;
        x(a);
      }
    }
    return x(e), t;
  }
  clone() {
    const e = Yt;
    let t = this.vertexes.slice();
    t[e(503)]((i) => {
      const r = e;
      i.inputs = i[r(490)][r(494)](), i.outputs = i.outputs.slice();
    });
    let x = this.edges.slice(), s = new xx(t, x);
    return s.hasDirection = this.hasDirection, s;
  }
  [Yt(493)]() {
    const e = Yt;
    let t = 0;
    this[e(484)].forEach((s) => t += s.getDegree()), console.assert(t == this.edges.length * 2);
    let x = this.vertexes.filter((s) => s.getDegree() % 2 != 0)[e(499)];
    console.assert(x % 2 == 0);
  }
}
const yx = Bt;
function Bt(n, e) {
  const t = is();
  return Bt = function(x, s) {
    return x = x - 337, t[x];
  }, Bt(n, e);
}
(function(n, e) {
  const t = Bt, x = n();
  for (; []; )
    try {
      if (parseInt(t(343)) / 1 + -parseInt(t(342)) / 2 + -parseInt(t(341)) / 3 + parseInt(t(346)) / 4 * (-parseInt(t(340)) / 5) + -parseInt(t(337)) / 6 + -parseInt(t(361)) / 7 + parseInt(t(350)) / 8 === e)
        break;
      x.push(x.shift());
    } catch {
      x.push(x.shift());
    }
})(is, 693922);
class h0 {
  static createMinimalSpanningTree(e) {
    const t = Bt;
    let x = [], s = [], i = e.edges.sort((a, c) => {
      const l = Bt;
      let h = a.weight - c.weight;
      return h == 0 && (h = a[l(353)].getInDegree() - c.from.getInDegree(), h == 0 && (h = c.to[l(351)]() - a.to.getOutDegree())), h;
    }), r = /* @__PURE__ */ new WeakMap();
    for (let a = 0; a < i[t(339)]; a++) {
      const c = i[a];
      let l = c[t(353)], h = c.to, d = r.get(l), p = r.get(h);
      if (d != null && p != null)
        continue;
      d == null && (d = new Qe(), d.object = l.object, x.push(d), r.set(l, d)), p == null && (p = new Qe(), p[t(349)] = h[t(349)], x[t(363)](p), r.set(h, p));
      let b = new fi(d, p);
      b.object = c[t(349)], s.push(b);
    }
    return new xx(x, s);
  }
  getNodes(e) {
    const t = Bt;
    return e[t(348)].map((x) => x[t(349)]);
  }
  getLinks(e) {
    const t = Bt;
    return e.edges[t(355)]((x) => x.object);
  }
  objectsToGraphs(e) {
    const t = Bt, x = e.filter((c) => c instanceof D);
    let s = e.filter((c) => c instanceof R);
    s.filter((c) => c.begin[t(358)]() && c.end.isNodeTarget());
    const i = /* @__PURE__ */ new WeakMap(), r = x.map((c) => {
      const l = t, h = new Qe();
      return h[l(349)] = c, i.set(c, h), h;
    });
    s.filter((c) => i.get(c.begin.target) && i.get(c.end.target));
    const o = s.map((c) => {
      const l = t;
      let h = i[l(344)](c.begin.target), d = i.get(c.end[l(347)]), p = new fi(h, d);
      return p[l(349)] = c, p;
    });
    return this[t(345)](r, o);
  }
  [yx(345)](e, t) {
    const x = yx;
    let s = [];
    e.forEach((o) => {
      const a = Bt;
      let c = o.inputs, l = o.outputs;
      s = s[a(357)](c), s = s.concat(l);
    });
    let i = [], r = /* @__PURE__ */ new Set();
    for (let o = 0; o < e.length; o++) {
      const a = e[o];
      if (r.has(a))
        continue;
      let c = [], l = [];
      this.travelVertext(a, c, l, r);
      let h = new xx(c, l);
      i[x(363)](h);
    }
    return i;
  }
  travelVertext(e, t = [], x = [], s = /* @__PURE__ */ new Set()) {
    const i = yx;
    if (s.has(e))
      return;
    t[i(363)](e), s.add(e);
    let r = e[i(356)].filter((c) => !s.has(c)), o = e.outputs[i(354)]((c) => !s.has(c));
    r.forEach((c) => {
      x.push(c), s.add(c);
    }), o.forEach((c) => {
      const l = i;
      x.push(c), s[l(360)](c);
    });
    let a = this;
    r.forEach((c) => {
      a.travelVertext(c.from, t, x, s);
    }), o[i(364)]((c) => {
      a[i(359)](c.to, t, x, s);
    });
  }
  toTree(e) {
    const t = yx;
    !e.isTree() && (e = h0.createMinimalSpanningTree(e));
    let x = e.vertexes.filter((c) => c.getInDegree() == 0)[0].object, s = e.vertexes.map((c) => c[t(349)]), i = e.edges[t(355)]((c) => c[t(349)]);
    const r = /* @__PURE__ */ new WeakMap();
    let o = new Ze();
    return o.fromObject(x), r.set(x, o), s.forEach((c) => {
      const l = t;
      if (c === x)
        return;
      const h = new Ze();
      h[l(362)](c), r.set(c, h);
    }), i.forEach((c) => {
      const l = t;
      let h = r.get(c.begin.target), d = r.get(c[l(338)].target);
      h[l(352)](d);
    }), new oc(o);
  }
}
function is() {
  const n = ["2540974vVURVu", "944932OZdYoL", "get", "toGraphs", "620WeRYKJ", "target", "vertexes", "object", "33553120KPcwqL", "getOutDegree", "addChild", "from", "filter", "map", "inputs", "concat", "isNodeTarget", "travelVertext", "add", "8918714HBlqcD", "fromObject", "push", "forEach", "6113160occYkG", "end", "length", "9830YMbStY", "1730913OgpFpQ"];
  return is = function() {
    return n;
  }, is();
}
const Ye = nx;
function rs() {
  const n = ["anime", "getPointsNormalization", "1159648dJWCPk", "translate", "17311wCvJjj", "2148AgSAYO", "objects", "695RrKzyi", "setXY", "scaleY", "2KVyMwW", "height", "updateXY", "189823WwcwyB", "resize", "510duXMiM", "animationSystem", "939921gWOSJm", "1598490rMASEB", "width", "scaleX", "3821430SZqIMT", "map"];
  return rs = function() {
    return n;
  }, rs();
}
(function(n, e) {
  const t = nx, x = n();
  for (; []; )
    try {
      if (-parseInt(t(190)) / 1 + -parseInt(t(187)) / 2 * (-parseInt(t(171)) / 3) + parseInt(t(182)) / 4 * (-parseInt(t(184)) / 5) + -parseInt(t(169)) / 6 * (-parseInt(t(181)) / 7) + parseInt(t(179)) / 8 + parseInt(t(172)) / 9 + -parseInt(t(175)) / 10 === e)
        break;
      x.push(x.shift());
    } catch {
      x.push(x.shift());
    }
})(rs, 199469);
function nx(n, e) {
  const t = rs();
  return nx = function(x, s) {
    return x = x - 169, t[x];
  }, nx(n, e);
}
class Ox {
  constructor(e, t) {
    const x = nx;
    this.x = 0, this.y = 0, this[x(174)] = 1, this[x(186)] = 1, this.width = 1, this.height = 1, this.rotation = 0, this.objects = e, this.positions = t, this.positionNormals = z[x(178)](t);
    let s = z.getPointsRect(t);
    this.width = s.width, this[x(188)] = s.height;
  }
  resizeTo(e, t) {
    this.width = e, this.height = t;
  }
  [Ye(191)](e, t) {
    const x = Ye;
    this[x(173)] = e, this.height = t;
  }
  [Ye(180)](e, t) {
    this.x = e, this.y = t;
  }
  scale(e, t) {
    this.scaleX = e, this.scaleY = t;
  }
  rotate(e) {
    this.rotation = e;
  }
  [Ye(189)](e) {
    const t = Ye, x = this.objects;
    let s = Math.min(e.length, x.length);
    for (let i = 0; i < s; i++) {
      let r = e[i];
      x[i][t(185)](r.x, r.y);
    }
  }
  doLayout(e) {
    const t = Ye;
    let x = this, s = this[t(183)], i = this.positionNormals;
    this.rotation != 0 && (i = z.rotateNormaledPoints(this.positionNormals, this.rotation));
    let r = (o) => {
      const a = t;
      return { x: x.x + x[a(173)] * o.x * x.scaleX, y: x.y + x[a(188)] * o.y * x[a(186)] };
    };
    if (i = i[t(176)](r), e != null) {
      let o = function(l) {
        return x[t(189)](l);
      }, a = s.map((l) => ({ x: l.x, y: l.y })), c = Object.assign({ from: a, to: i, update: o }, e);
      this[t(170)][t(177)](c).play();
    } else
      this[t(189)](i);
    return this;
  }
}
(function(n, e) {
  const t = os, x = n();
  for (; []; )
    try {
      if (parseInt(t(281)) / 1 + -parseInt(t(287)) / 2 * (-parseInt(t(283)) / 3) + -parseInt(t(271)) / 4 * (-parseInt(t(280)) / 5) + parseInt(t(276)) / 6 + parseInt(t(282)) / 7 * (-parseInt(t(273)) / 8) + parseInt(t(275)) / 9 * (-parseInt(t(285)) / 10) + parseInt(t(274)) / 11 * (-parseInt(t(270)) / 12) === e)
        break;
      x.push(x.shift());
    } catch {
      x.push(x.shift());
    }
})(as, 183661);
function os(n, e) {
  const t = as();
  return os = function(x, s) {
    return x = x - 270, t[x];
  }, os(n, e);
}
function as() {
  const n = ["width", "52616TKmRIJ", "4309811HRBZkm", "63alyqjc", "599052bwJqco", "length", "forEach", "translateTo", "672355fcVNQJ", "288940jPneDo", "210pLOyqo", "6YQMGNi", "translateWithRecursive", "202720KQspCb", "abs", "256952LWPnGO", "12KuClQG", "8gEtpkP"];
  return as = function() {
    return n;
  }, as();
}
function cc(n) {
  const e = os;
  let t = n.indexData, x = n.deep, s = n.getLeafs(), i = 60, r = 80;
  for (let c = 0; c < s[e(277)]; c++) {
    let l = s[c], h = (c + 1) * i, d = x * r;
    l[e(279)](h, d);
  }
  for (let c = x - 1; c >= 0; c--) {
    let l = t[c];
    for (let h = 0; h < l.length; h++) {
      let d = l[h], p = d.children, b = d.x, _ = c * r;
      if (p[e(277)] > 0 ? b = (p[0].x + p[p.length - 1].x) / 2 : h > 0 && (b = l[h - 1].x + l[h - 1].width), d.translateTo(b, _), h > 0 && d.x < l[h - 1].x + l[h - 1][e(272)]) {
        let I = l[h - 1].x + l[h - 1].width, g = Math[e(286)](I - d.x);
        for (let k = h; k < l.length; k++)
          l[k][e(284)](g, 0);
      }
    }
  }
  let o = [];
  return n.allVirtualNodes[e(278)]((c) => {
    o.push(c);
  }), o;
}
const be = cs;
(function(n, e) {
  const t = cs, x = n();
  for (; []; )
    try {
      if (-parseInt(t(438)) / 1 + -parseInt(t(432)) / 2 * (-parseInt(t(441)) / 3) + -parseInt(t(424)) / 4 * (parseInt(t(440)) / 5) + -parseInt(t(428)) / 6 * (parseInt(t(451)) / 7) + parseInt(t(449)) / 8 * (-parseInt(t(429)) / 9) + parseInt(t(431)) / 10 * (-parseInt(t(433)) / 11) + -parseInt(t(430)) / 12 * (-parseInt(t(436)) / 13) === e)
        break;
      x.push(x.shift());
    } catch {
      x.push(x.shift());
    }
})(ls, 348996);
function cs(n, e) {
  const t = ls();
  return cs = function(x, s) {
    return x = x - 421, t[x];
  }, cs(n, e);
}
function ls() {
  const n = ["radiusScale", "animationSystem", "travelTree", "startAngle", "travelNext", "traverse", "416rVlmVC", "update", "2000194sVSWpP", "map", "push", "endAngle", "4900oGwZMF", "object", "has", "getAdjacentList", "6xVClfc", "109179muEDaB", "3694788PBHxFn", "10060INvPvz", "10866PGgyql", "4059XRsllo", "radius", "vertexes", "91QwnFvh", "angleScale", "604062JPgIad", "shapeLayout", "2445NkDhnO", "378CZNKWp", "cos"];
  return ls = function() {
    return n;
  }, ls();
}
class Fr {
  constructor(e, t) {
    this.animationSystem = e, this.graphSystem = t;
  }
  [be(439)](e, t) {
    const x = be;
    let s = t;
    t instanceof M && (s = t.points);
    let i = new Ox(e, s);
    return i[x(444)] = this.animationSystem, i;
  }
  circleLayout(e, t = {}) {
    const x = be;
    !e.isTree() && (e = h0.createMinimalSpanningTree(e));
    let s = e[x(448)](null).filter((c) => c instanceof Qe), i = s[0], r = this.getCircleLayoutPositions(i, t), o = s[x(421)]((c) => c[x(425)]), a = new Ox(o, r);
    return a.animationSystem = this.animationSystem, a;
  }
  treeLayout(e) {
    const t = be;
    !e.isTree() && (e = h0.createMinimalSpanningTree(e));
    let x = e.traverse(null).filter((a) => a instanceof Qe), s = this.graphSystem.toTree(e), i = cc(s), r = x.map((a) => a.object), o = new Ox(r, i);
    return o.animationSystem = this[t(444)], o;
  }
  [be(445)](e, t) {
    const x = be;
    if (!e.isTree())
      throw new Error("graph is not a tree");
    return t == null && (t = e[x(435)][0]), e[x(447)](t);
  }
  getCircleLayoutPositions(e, t = {}) {
    const x = be;
    t.cx = t.cx || 0, t.cy = t.cy || 0, t[x(434)] = t[x(434)] || 200, t.startAngle = t[x(446)] || 0, t[x(423)] = t.endAngle || 2 * Math.PI, t[x(443)] = t.radiusScale || 0.5, t.angleScale = t[x(437)] || 1, t.endAngle > 2 * Math.PI && (t[x(423)] = t.endAngle % (2 * Math.PI));
    let s = [], i = /* @__PURE__ */ new Set(), r = [];
    function o(a, c, l, h, d, p, b) {
      const _ = x;
      if (i[_(426)](a))
        return;
      r.push(a[_(425)].id), i.add(a), s[_(422)]({ x: c, y: l });
      let I = a[_(427)](), g = I.length;
      if (b > 1 && (g -= 1), g <= 0)
        return;
      let k = d, S = p - d, E = S;
      S < 2 * Math.PI && (g -= 1), g != 0 && (E /= g), b > 1 && (S < 2 * Math.PI ? k -= S * 0.5 : S == 2 * Math.PI && g > 1 && g % 2 == 0 && (k += E * 0.5));
      for (let A = 0; A < I.length; A++) {
        let $t = I[A], Ht = k + A * E, ue = c + h * Math[_(442)](Ht), de = l + h * Math.sin(Ht);
        t[_(450)] && t.update(t, e[_(425)], b), o($t, ue, de, h * t.radiusScale, Ht, Ht + S, b + 1);
      }
    }
    return t.update && t.update(t, e[x(425)], 0), o(e, t.cx, t.cy, t.radius, t.startAngle, t[x(423)], 1), s;
  }
  sizeFitToChildren(e, t) {
    return Gt.sizeFitToChildren(e, t);
  }
}
const w0 = sx;
(function(n, e) {
  const t = sx, x = n();
  for (; []; )
    try {
      if (-parseInt(t(179)) / 1 * (parseInt(t(162)) / 2) + parseInt(t(169)) / 3 + -parseInt(t(173)) / 4 + -parseInt(t(172)) / 5 * (parseInt(t(165)) / 6) + -parseInt(t(175)) / 7 * (parseInt(t(174)) / 8) + -parseInt(t(167)) / 9 * (parseInt(t(166)) / 10) + -parseInt(t(164)) / 11 * (-parseInt(t(163)) / 12) === e)
        break;
      x.push(x.shift());
    } catch {
      x.push(x.shift());
    }
})(hs, 133909);
function sx(n, e) {
  const t = hs();
  return sx = function(x, s) {
    return x = x - 161, t[x];
  }, sx(n, e);
}
function hs() {
  const n = ["object", "4228DcMCmW", "3452652kdebdL", "22EuVjis", "102apbSru", "20zYSJOU", "23679lkaaWb", "mouseEnabledBak", "395925OFmVau", "hideList", "inputSystem", "55590IGGhCx", "766812AMcfxi", "25096juygNW", "343YdwobI", "enter", "getCurrentLayer", "stage", "16mOkxiO"];
  return hs = function() {
    return n;
  }, hs();
}
class lc {
  constructor(e) {
    const t = sx;
    this.mode = "painted", this[t(178)] = e;
  }
  [w0(176)](e) {
    const t = w0;
    if (this.quit(), e == null || e === this.object || !e.isNode) {
      this.object = null;
      return;
    }
    this[t(161)] = e;
    let x = this.stage[t(177)]();
    this[t(170)] = C.flatten(x.children, (s) => s !== e), this.mouseEnabledBak = e.mouseEnabled, e.mouseEnabled = ![], e.isSelected = ![], this[t(170)].forEach(function(s, i) {
      s._cameraVisible = ![];
    });
  }
  quit() {
    const e = w0;
    this.hideList != null && (this.mouseEnabledBak != null && (this[e(161)].mouseEnabled = this[e(168)]), this.hideList.forEach(function(t, x) {
      t._cameraVisible = !![];
    })), this.hideList = null, this.stage.update();
  }
  getObject() {
    const e = w0;
    return this.object == null ? this[e(178)][e(177)]() : this[e(161)];
  }
  getMouseXY() {
    const e = w0;
    return this.getObject().screenToLocalXY(this.stage.inputSystem.x, this[e(178)][e(171)].y);
  }
}
(function(n, e) {
  for (var t = pi, x = n(); []; )
    try {
      var s = -parseInt(t(290)) / 1 + -parseInt(t(284)) / 2 + parseInt(t(286)) / 3 * (-parseInt(t(285)) / 4) + -parseInt(t(291)) / 5 * (parseInt(t(282)) / 6) + parseInt(t(289)) / 7 * (parseInt(t(283)) / 8) + -parseInt(t(288)) / 9 + parseInt(t(287)) / 10;
      if (s === e)
        break;
      x.push(x.shift());
    } catch {
      x.push(x.shift());
    }
})(us, 423200);
function pi(n, e) {
  var t = us();
  return pi = function(x, s) {
    x = x - 282;
    var i = t[x];
    return i;
  }, pi(n, e);
}
function us() {
  var n = ["644646wmwQmr", "27929340olmhpE", "5307696WNFAyN", "7yxRvoz", "571851lhhwkY", "5iNZPTU", "3747078OLQFxb", "1629336CqDNgo", "715058xFYxQC", "8LfPVxd"];
  return us = function() {
    return n;
  }, us();
}
class hc {
  constructor(e) {
    this.type = e;
  }
}
const q = u0;
(function(n, e) {
  const t = u0, x = n();
  for (; []; )
    try {
      if (parseInt(t(211)) / 1 + parseInt(t(205)) / 2 * (parseInt(t(217)) / 3) + -parseInt(t(206)) / 4 + -parseInt(t(191)) / 5 * (-parseInt(t(216)) / 6) + -parseInt(t(199)) / 7 + -parseInt(t(202)) / 8 + parseInt(t(207)) / 9 === e)
        break;
      x.push(x.shift());
    } catch {
      x.push(x.shift());
    }
})(ds, 579505);
function u0(n, e) {
  const t = ds();
  return u0 = function(x, s) {
    return x = x - 184, t[x];
  }, u0(n, e);
}
function ds() {
  const n = ["filter", "getChildren", "742232gWbTBX", "scaleTo", "scaleX", "translate", "enter", "1354956FRiViw", "1641lwrUcn", "length", "zoomOut", "zoom", "localView", "zoomIn", "dispatchEvent", "_dragWith", "scale", "hasListener", "lookAt", "zoomMinLimit", "type", "5lVDbaG", "dirty", "defaultPrevented", "scaleY", "height", "zoomMaxLimit", "translateWith", "inputSystem", "2279200cwVFgW", "update", "cancelZoom", "6049616cXsaeO", "stage", "zoomLayer", "944GfDGqq", "4605716qBwFrp", "14278446yxHUuu", "transform"];
  return ds = function() {
    return n;
  }, ds();
}
let Dt = new hc(q(220));
class uc extends Et {
  constructor(e) {
    const t = q;
    super(), this.x = 0, this.y = 0, this.scale = 1, this.dirty = !![], this.transform = new lx(), this.zoomMaxLimit = 10, this[t(189)] = 0.1, this.stage = e;
  }
  [q(188)](e, t) {
    const x = q;
    typeof e != "number" ? (this.x = e.x, this.y = e.y) : (this.x = e, this.y = t);
    const s = this.stage, i = this;
    s.getChildren().forEach(function(r) {
      const o = u0;
      r.translate(-i.x * r.scaleX, -i.y * r[o(194)]);
    }), s[x(200)](), Dt.type = "lookAt", this[x(184)](Dt), this.dirty = !![];
  }
  zoomOut(e = 0.8) {
    const t = q;
    return this.zoomBy(e), Dt.type = t(219), this.dispatchEvent(Dt), this;
  }
  [q(222)](e = 1.25) {
    const t = q;
    return this.zoomBy(e), Dt.type = "zoomIn", this[t(184)](Dt), this;
  }
  zoomBy(e, t, x) {
    const s = q;
    let i = this.scale * e;
    if (i > this[s(196)] || i < this[s(189)])
      return;
    this.scale = i;
    const r = this.stage;
    if (this.hasListener(gt.zoom)) {
      let a = new Event(gt.zoom, { cancelable: !![] });
      if (r.dispatchEvent(a), a[s(193)] == !![])
        return;
    }
    const o = this;
    if (r.getChildren().forEach(function(a) {
      const c = s;
      a.mouseEnabled && a.wheelZoom && o[c(204)](a, e, t, x);
    }), this[s(187)](gt.zoomAfter)) {
      let a = new Event(gt.zoomAfter, { cancelable: !![] });
      if (r[s(184)](a), a.defaultPrevented == !![])
        return;
    }
    r[s(200)](), this.dirty = !![], Dt[s(190)] = s(220), this[s(184)](Dt);
  }
  [q(220)](e) {
    const t = q;
    this.stage[t(210)]().forEach(function(s) {
      s.scaleTo(1, 1), s.translateTo(0, 0);
    }), this.scale = 1, this.zoomBy(e, this.x, this.y);
  }
  cancelZoom() {
    const e = q, t = this.stage;
    t.getChildren().forEach(function(x) {
      x[u0(212)](1, 1), x.translateTo(0, 0);
    }), this.scale = 1, this.dirty = !![], t.update(), Dt.type = e(201), this.dispatchEvent(Dt);
  }
  zoomLayer(e, t, x, s) {
    const i = q;
    if (this.hasListener("zoom")) {
      let l = new Event("zoom", { cancelable: !![] });
      if (l.zoom = { x: t, y: t, cx: x, cy: s }, this[i(184)](l), l.defaultPrevented == !![])
        return;
    }
    if (x != null && s != null) {
      e.updateMatrix();
      let l = e.toScreenXY(x, s);
      x = l.x, s = l.y;
    }
    e.scaleBy(t, t);
    let r = e.width * e[i(213)], o = e[i(195)] * e.scaleY, a = r * t - r, c = o * t - o;
    if (x != null && s != null) {
      let l = e.stage, h = { x: l.width * 0.5, y: l.height * 0.5 }, d = e.toScreenXY(h.x, h.y), p = (x - d.x) / 2, b = (s - d.y) / 2;
      t >= 1 ? (a += p, c += b) : (a -= p * t, c -= b * t);
    }
    e.translateWith(-(a / 2), -(c / 2));
  }
  translateWith(e, t) {
    const x = q;
    this.x += e, this.y += t, this[x(192)] = !![];
  }
  [q(185)](e, t) {
    const x = q;
    this.translateWith(-e, -t);
    const s = this[x(203)];
    s[x(198)].isDragStart && s.setCursor("grabbing");
    const i = s.getChildren()[x(209)]((r) => r.mouseEnabled && r.draggable);
    for (let r = 0; r < i[x(218)]; r++)
      i[r][x(197)](e, t);
  }
  targetOnly(e) {
    const t = q;
    this.stage[t(221)][t(215)](e);
  }
  getTransform() {
    const e = q;
    return this.transform[e(214)](this.x, this.y), this[e(208)].scale(this[e(186)], this[e(186)]), this.transform;
  }
  isDirty() {
    return this[q(192)];
  }
  clearDirty() {
    const e = q;
    this[e(192)] = ![];
  }
}
const w = ix;
(function(n, e) {
  const t = ix, x = n();
  for (; []; )
    try {
      if (-parseInt(t(116)) / 1 + parseInt(t(144)) / 2 + parseInt(t(207)) / 3 + -parseInt(t(200)) / 4 + -parseInt(t(161)) / 5 + parseInt(t(201)) / 6 + parseInt(t(203)) / 7 === e)
        break;
      x.push(x.shift());
    } catch {
      x.push(x.shift());
    }
})(fs, 532919);
function ix(n, e) {
  const t = fs();
  return ix = function(x, s) {
    return x = x - 108, t[x];
  }, ix(n, e);
}
function fs() {
  const n = ["pickUpViewLayers", "saveAsLocalImage", "dropAllowed", "resize", "hideOverview", "show", "normal", "localView", "canvas", "dropTarget", "calc(100% - ", "450084SQUdVJ", "pickObject", "grab", "effectSystem", "ctrlKey", "now", "mouseY", "style", "updateZIndex", "exportSystem", "forceUpdate", "resizeTo", "modeChange", "hasListener", "drag", "width", "_obb", "select", "clickHandler", "context", "camera", "render", "observe", "log", "overview", "map", "mouseoverHandler", "showDebugPanel", "1458040lPbOGm", "pickUpByRect", "appendChild", "handlerLayer", "filter", "setMode", "_resizeTimer", "mode", "mouseup", "dragEndHandler", "fullWindow", "debugPanel", "previous", "zIndex", "round", "mouseX", "height", "3192195wXvgDY", "download", "children", "animationSystem", "containsRect", "renderSystem", "setCursor", "px)", "visible", "mouseoutHandler", "isNode", "removeAt", "getChildren", "selectedGroup", "zoomIn", "_resizeObserver", "unionRects", "cancelZoom", "saveImageInfo", "mouseenterHandler", "painted", "layersContainer", "centerBy", "addChild", "inputSystem", "fullScreen", "target", "zoomBy", "mousedownHandler", "toolbar", "getExportAABB", "indexOf", "hide", "defaultPrevented", "getElementById", "flatten", "findDropToObjec", "metaKey", "default", "1239140VDZHQo", "185970fdjKkO", "setToolbar", "1960714rgejEG", "showOverview", "getToolbarHeight", "push", "2673330DLMzkr", "warn", "mousedragHandler", "wheelZoom", "zoom", "clientHeight", "update", "ResizeObserver", "forEach", "mousemoveHandler"];
  return fs = function() {
    return n;
  }, fs();
}
let dc = Date[w(121)]();
class Oi extends Et {
  constructor(e, t) {
    const x = w;
    super(), this.version = mi, this.children = [], this[x(169)] = ![], this[x(151)] = x(111), this.destoryed = ![], this.config = { dropAllowed: !![] }, this.Debug = le, t != null && Object.assign(this.config, t), this.camera = new uc(this), this[x(112)] = new lc(this), this.localView.mode = null, this.keyboard = new Ar(this), this[x(185)] = new Si(), this.selectedGroup = new Br(), this.resourceSystem = rt, this._init(e), this.injectCss(), this.styleSystem = new Wr(this), this.behaviourSystem = new rc(this), this[x(164)] = new Rr(), this[x(119)] = new Hr(this, this.animationSystem), this.graphSystem = new h0(), this.layoutSystem = new Fr(this.animationSystem, this.graphSystem), this.renderSystem = new Ya(this), this[x(125)] = new Xa(this), this.serializerSystem = new qe(), this.resourceSystem.on("loaded", (s) => {
      this.update();
    }), this[x(185)]._initEvent(this);
  }
  injectCss() {
    const e = w;
    let t = document.head || document.getElementsByTagName("head")[0], x = document[e(195)]("_jtopo_style_");
    x == null && (x = document.createElement(e(123)), x.id = "_jtopo_style_", x.textContent = da, t.appendChild(x));
  }
  _init(e) {
    const t = w;
    let x = this;
    document.oncontextmenu = function() {
      return !x.inputSystem.isMouseOn;
    }, x.domElement = gc(e);
    const s = document.createElement("div");
    x.layersContainer = s, x[t(155)] = new ha(x), le.isDebug && x[t(155)][t(110)](), x[t(202)](new Dr(x)), s.classList.add("layer_container"), s[t(123)].position = "relative", s.style.width = "100%", x.domElement[t(146)](s), x.width = s.offsetWidth, x.height = s[t(212)];
    {
      const i = new Ys(x);
      x.handlerLayer = i;
      const r = i[t(137)].canvas;
      r.style.zIndex = "" + i.zIndex, this.layersContainer.appendChild(r);
    }
    fc(x), x.on("dragover", function(i) {
      i.preventDefault();
    });
  }
  [w(143)]() {
    this[w(155)].show();
  }
  hideDebugPanel() {
    const e = w;
    this.debugPanel[e(193)]();
  }
  [w(204)](e) {
    const t = w;
    let x = this;
    x.overview == null && (x.overview = new ua(x)), x.overview.css(e), x.overview[t(110)]();
  }
  _updateOverview() {
    this[w(140)] != null && this.overview.update();
  }
  [w(109)]() {
    const e = w;
    this[e(140)] != null && this.overview[e(193)]();
  }
  [w(205)]() {
    return this.toolbar == null ? 0 : this.toolbar.getHeigth();
  }
  zoomOut(e = 0.8) {
    return this.camera.zoomOut(e), this;
  }
  [w(175)](e = 1.25) {
    const t = w;
    return this.camera[t(175)](e), this;
  }
  [w(211)](e) {
    this[w(136)].zoomBy(e);
  }
  [w(178)]() {
    this.camera.cancelZoom();
  }
  zoomFullStage() {
    const e = w, t = this;
    let x = t.getAABB(), s = t.width / x[e(131)], i = t.height / x[e(160)], r = Math.min(s, i), o = 0, a = 0;
    this.camera[e(188)](r, o, a), t.translateToCenter();
  }
  translateToCenter() {
    const e = w;
    if (!this.visible) {
      console[e(208)]("stage.translateToCenter() should after stage.show()");
      return;
    }
    this[e(173)]().forEach(function(t) {
      t[e(183)]();
    });
  }
  createLayer(e) {
    let t = new pt(e);
    return this.addChild(t), t;
  }
  [w(184)](e) {
    const t = w;
    e._onMound(this), e.zIndex = this.children.length, e[t(127)](this[t(131)], this[t(160)]), e.name == null && (e.name = "Layer_" + e.zIndex), this[t(163)][t(206)](e);
    const x = e.render[t(113)];
    x.style[t(157)] = "" + e[t(157)], this[t(182)][t(146)](x), this.updateZIndex();
  }
  [w(124)]() {
    const e = w;
    this[e(163)].sort(function(t, x) {
      const s = e;
      return t.zIndex - x[s(157)];
    }), this.children.forEach((t) => {
      const x = e, s = t.render.canvas;
      s.style.zIndex = "" + t[x(157)];
    });
  }
  getChildren() {
    return this.children;
  }
  removeChild(e) {
    const t = w;
    e.render[t(113)].remove();
    let x = this.children.indexOf(e);
    return x == -1 ? this : (z[t(172)](this[t(163)], x), e.stage = null, this);
  }
  show() {
    const e = w;
    this.visible = !![], this[e(173)]().forEach(function(t) {
      t.show();
    }), this[e(166)].start(), this.styleSystem.start();
  }
  hide() {
    const e = w;
    this.visible = ![], this[e(166)].pause(), this.getChildren()[e(215)](function(t) {
      t[e(193)]();
    });
  }
  [w(213)]() {
    this[w(173)]().forEach(function(t) {
      t.update();
    }), this.handlerLayer.update();
  }
  forceUpdate() {
    const e = w;
    this[e(147)][e(126)](), this.getChildren()[e(215)](function(t) {
      t.forceUpdate();
    });
  }
  toDataURL() {
    return this[w(125)].toDataURL(this.children);
  }
  [w(179)]() {
    return this[w(125)].saveImageInfo(this.children);
  }
  [w(218)]() {
    const e = w;
    this[e(125)].saveAsLocalImage(this[e(163)]);
  }
  on(e, t) {
    return this.on.index = dc, this.addEventListener(e, t);
  }
  fullWindow() {
    const e = w;
    if (this.hasListener(gt[e(154)])) {
      let t = new Event(gt[e(154)], { cancelable: !![] });
      if (this.dispatchEvent(t), t.defaultPrevented == !![])
        return;
    }
    Be[e(154)](this.domElement);
  }
  [w(186)]() {
    Be.fullScreen(this.domElement);
  }
  showToolbar() {
    const e = w;
    if (this.toolbar == null)
      return;
    this.toolbar.show();
    let t = "calc(100% - " + this.getToolbarHeight() + "px)";
    this[e(182)].style.height = t;
  }
  hideToolbar() {
    const e = w;
    if (this.toolbar == null)
      return;
    this[e(190)].hide();
    let t = "calc(100% - " + this.getToolbarHeight() + "px)";
    this[e(182)][e(123)][e(160)] = t;
  }
  setToolbar(e) {
    const t = w;
    this.toolbar != null && this[t(190)].remove(), this.domElement.appendChild(e.getDom());
    let x = "calc(100% - " + this[t(205)]() + "px)";
    this.layersContainer[t(123)].height = x, this[t(190)] = e;
  }
  setMode(e) {
    const t = w;
    if (this[t(129)](gt[t(128)])) {
      let x = new Event(gt[t(128)], { cancelable: !![] });
      if (x.mode = e, this.dispatchEvent(x), x[t(194)] == !![])
        return;
    }
    pc(this, e), e == kt[t(130)] ? this.setCursor(t(118)) : this.setCursor(t(199));
  }
  dropHandler(e) {
  }
  dragoverHandler() {
  }
  [w(142)]() {
  }
  [w(189)](e) {
    const t = w, x = this.inputSystem;
    if (this.mode == kt.drag) {
      this[t(167)]("grabbing");
      return;
    }
    let s = this, i = s.pickUpViewLayers();
    s.inputSystem[t(187)] = i;
    let r = s[t(151)] == "edit" && i != null && i.mouseEnabled == ![];
    if (i != null && !r) {
      x[t(117)](i);
      return;
    }
    !(e[t(120)] || e[t(198)]) && s.selectedGroup.removeAll();
  }
  static findDropToObjec(e, t) {
    const x = w;
    let s = e.getAncestors(), i = C[x(196)](e[x(163)]);
    for (let r = t.length - 1; r >= 0; r--) {
      let o = t[r];
      if (!(e === o || o === e.parent || !o[x(219)]) && !(s[x(192)](o) != -1 || i.indexOf(o) != -1) && o[x(132)].aabb[x(165)](e._obb.aabb))
        return o;
    }
    return null;
  }
  [w(209)](e) {
    const t = w, x = this.inputSystem, s = this.handlerLayer, i = this[t(151)], r = this.inputSystem[t(187)], o = this[t(174)], a = this.pickUpViewLayers();
    x.mouseoverTarget = a;
    const c = e.buttons == 1, l = c && r != null && r.mouseEnabled && r.draggable, h = this[t(173)]()[t(148)]((p) => p.mouseEnabled);
    if (c && this.config.dropAllowed && l && r.draggable) {
      let p = null;
      for (let b = 0; b < h.length; b++) {
        const _ = h[b], I = _.flattenList.filter((g) => g[t(181)] && g[t(171)]);
        p = Oi[t(197)](r, I), p !== x.dropTarget && x[t(114)] && x.dropTarget.dragoutHandler(x), p != null && p.dragoverHandler(this.inputSystem);
      }
      x.dropTarget = p;
    }
    if (l) {
      o.dragHandler(x);
      return;
    }
    if (c && (i == kt[t(133)] || i == kt.edit)) {
      Fi(s);
      return;
    }
    this[t(136)]._dragWith(x.dx, x.dy);
  }
  mouseupHandler(e) {
    const t = w, x = this.inputSystem;
    let s = this;
    const i = this.getChildren(), r = x.isRightButton();
    for (let c = 0; c < i.length; c++) {
      const l = i[c];
      l.draggable && x.isDraging && l[t(153)]();
    }
    if (this.mode == kt[t(130)]) {
      this[t(167)](t(118));
      return;
    }
    this.setCursor("default");
    let o = this[t(185)].target, a = this[t(147)];
    a.areaBox.hide(), a.areaBox[t(127)](0, 0), o && o.mouseEnabled && (x.type == t(152) ? o.mouseupHandler(x) : x.type == "touchend" && o.touchendHandler(x), x.previous.isDraging && o.draggable && r == ![] && s.selectedGroup.dragEndHandler(x)), this.config.dropAllowed && x.dropTarget && (x.dropTarget.dropHandler(x), x.dropTarget = null);
  }
  mouseoutHandler(e) {
    const t = w, x = this[t(185)];
    this.handlerLayer.mouseoutHandler(x), this.selectedGroup.mouseoutHandler(x);
  }
  [w(134)](e) {
    const t = w, x = this.inputSystem;
    let s = x[t(187)];
    s && !x[t(156)].isDragEnd && s.clickHandler(x);
  }
  dblclickHandler(e) {
    const t = w, x = this.inputSystem;
    let s = x.target;
    s && !x[t(156)].isDragEnd && s.dblclickHandler(x);
  }
  [w(216)](e) {
    const t = w, x = this[t(185)];
    if (x.isDraging)
      return this[t(209)](e);
    if (this.mode == kt.drag) {
      this.setCursor("grab");
      return;
    }
    if (x.skipPointerMovePicking) {
      console[t(139)]("跳过");
      return;
    }
    let s = x.mouseoverTarget, i = this.pickUpViewLayers();
    s !== i && s != null && s.mouseoutHandler && s[t(170)](x), i != null && (s !== i ? i[t(180)] && i.mouseenterHandler(x) : i.mousemoveHandler && i.mousemoveHandler(x)), x.mouseoverTarget = i;
  }
  mousewheelHandler(e) {
    const t = w, x = this.getCurrentLayer();
    if (x == null || this.inputSystem[t(210)] != !![])
      return;
    let r = x[t(159)], o = x[t(122)];
    (e.wheelDelta == null ? e.detail : e.wheelDelta) > 0 ? this[t(136)].zoomBy(1.25, r, o) : this[t(136)].zoomBy(0.8, r, o);
  }
  mouseenterHandler(e) {
  }
  touchstartHandler(e) {
    this[w(189)](e);
  }
  touchmoveHandler(e) {
    const t = w, x = this.inputSystem, s = this.handlerLayer, i = this.mode, r = this.inputSystem.target, o = this[t(174)], a = this[t(217)]();
    this.inputSystem.mouseoverTarget = a, x.distanceRatio != 1 && this[t(173)]().forEach((h) => {
      h[t(211)](x.distanceRatio, x.distanceRatio);
    }), x.isDragStart;
    const c = r != null && r.mouseEnabled && r.draggable;
    if (this.getChildren()[t(148)]((h) => h.mouseEnabled), c) {
      o.dragHandler(x);
      return;
    }
    if (i == kt[t(133)] || i == kt.edit) {
      Fi(s);
      return;
    }
    this.camera._dragWith(x.dx, x.dy);
  }
  touchwheelHandler(e) {
    throw new Error("touchwheelHandler");
  }
  touchendHandler(e) {
    this.mouseupHandler(e);
  }
  pickUpViewLayers() {
    let e = this.getChildren();
    for (let t = e.length - 1; t >= 0; t--) {
      let x = e[t];
      if (!(x.visible && x.mouseEnabled))
        continue;
      let s = x.pickUpChild();
      if (s != null)
        return s;
    }
    return null;
  }
  getCursor() {
    return this.handlerLayer.render.getCursor();
  }
  [w(167)](e) {
    const t = w;
    return this[t(147)][t(137)].setCursor(e);
  }
  [w(162)](e, t) {
    return this.exportSystem.download(e, t);
  }
  select(e) {
    this[w(174)].removeAll(), this.selectedGroup.addAll(e);
  }
  getCurrentLayer() {
    const e = w;
    return this.children.filter((t) => t[e(169)] == !![])[0];
  }
  rand(e, t) {
    const x = w;
    return e == null && (e = -this.width * 0.5), t == null && (t = this.height * 0.5), Math[x(158)](Math.random() * (t - e) + e);
  }
  getAABB() {
    const e = w;
    let t = this.getChildren().map((s) => s.toStageRect(s.getAABB()));
    return j[e(177)](t);
  }
  [w(191)]() {
    const e = w;
    let t = this[e(173)]()[e(141)]((s) => s.toStageRect(s.getExportAABB()));
    return j.unionRects(t);
  }
  destory(e) {
    const t = w;
    if (this.destoryed)
      throw new Error("Stage has been destroyed already.");
    this.destoryed = !![], this[t(176)] && this._resizeObserver.disconnect(), this[t(150)] && clearInterval(this._resizeTimer), this.handlerLayer.destory(), this.children.forEach((x) => {
      x.destory();
    }), this.domElement.innerHTML = "", e != ![] && rt.clearCache();
  }
}
function Fi(n, e) {
  const t = w;
  let x = n.stage, s = n.showAreaBox(), i = n.stage.getChildren();
  for (var r = 0; r < i.length; r++) {
    let o = i[r];
    if (!o.hasChildren())
      continue;
    let a = o.toLayerRect(s), c = o[t(145)](a);
    x[t(174)].addAll(c);
  }
}
function Yi(n, e, t) {
  const x = w;
  n.layersContainer.style.height = "calc(100% - " + n.getToolbarHeight() + x(168), n.width = e, n.height = t, n[x(147)].updateSize(e, t), n[x(173)]().forEach(function(i) {
    i.updateSize(e, t), n.editor && n.editor.update && n.editor.update();
  });
  let s = new Event(gt[x(108)]);
  n.dispatchEvent(s);
}
function fc(n) {
  const e = w, t = n.layersContainer;
  if (t.style.height = e(115) + n.getToolbarHeight() + "px)", window[e(214)]) {
    const s = new ResizeObserver((i) => {
      i[0].contentRect, Ot.delayRun("stage_resize", function() {
        const o = ix;
        Yi(n, t.clientWidth, t[o(212)]);
      }, 30);
    });
    s[e(138)](t), n._resizeObserver = s;
    return;
  }
  let x = setInterval(function() {
    const s = e;
    let i = t.offsetWidth, r = t.offsetHeight;
    (n.width != i || n[s(160)] != r) && (t.style[s(160)] = "calc(100% - " + n.getToolbarHeight() + "px)", Yi(n, i, r));
  }, 500);
  n[e(150)] = x;
}
function pc(n, e) {
  let t = n.mode;
  n.mode = e;
  let x = { type: gt.modeChange, oldMode: t, newMode: e };
  n.dispatchEvent(x);
}
function gc(n) {
  const e = w;
  if (typeof n == "string" && (n = document.getElementById(n), n == null))
    throw new Error("the dom element id is not found id:" + n);
  if (n == null)
    throw new Error("the dom element is null.");
  return n[e(123)].position = "relative", n;
}
const K = ps;
(function(n, e) {
  const t = ps, x = n();
  for (; []; )
    try {
      if (parseInt(t(419)) / 1 + parseInt(t(427)) / 2 + -parseInt(t(418)) / 3 + parseInt(t(430)) / 4 + -parseInt(t(426)) / 5 + -parseInt(t(424)) / 6 * (parseInt(t(423)) / 7) + parseInt(t(417)) / 8 === e)
        break;
      x.push(x.shift());
    } catch {
      x.push(x.shift());
    }
})(gs, 532674);
var bc = Object.defineProperty, yc = Object[K(434)], _x = (n, e, t, x) => {
  const s = K;
  for (var i = x > 1 ? void 0 : x ? yc(e, t) : e, r = n[s(420)] - 1, o; r >= 0; r--)
    (o = n[r]) && (i = (x ? o(e, t, i) : o(i)) || i);
  return x && i && bc(e, t, i), i;
};
function ps(n, e) {
  const t = gs();
  return ps = function(x, s) {
    return x = x - 411, t[x];
  }, ps(n, e);
}
function gs() {
  const n = ["setCtrlPoint", "shape", "Curve", "12216256WYitCH", "2785980cBWMXp", "9554TTrpkP", "length", "updatePoints", "_calcAZ", "7ZKuluO", "4759806ilCBut", "normalize", "3918610eTXUTj", "1828332MVaxvl", "getEndArrowDirection", "DefaultPositions", "2350420bnUGEa", "ctrlPoint", "getPoints", "autoCalcCtrlPoint", "getOwnPropertyDescriptor", "points", "getCtrlPoint", "serializers"];
  return gs = function() {
    return n;
  }, gs();
}
class Ge extends R {
  constructor(e, t, x, s, i) {
    super(e, t, x, s, i), this.direction = "horizontal";
  }
  [K(421)]() {
    const e = K;
    let t = this[e(422)](), x = t[0], s = t[1], i = this.getCtrlPoint(x, s);
    return this.points = [x, i, s], this[e(411)];
  }
  translateWith(e, t) {
    const x = K;
    return super.translateWith(e, t), this.ctrlPoint != null && (this[x(431)].x += e, this.ctrlPoint.y += t), this;
  }
  [K(433)](e, t) {
    let x = (e.x + t.x) / 2, s = (e.y + t.y) / 2;
    return this.direction == t0.horizontal ? s += (t.y - e.y) / 2 : s -= (t.y - e.y) / 2, { x, y: s };
  }
  getCtrlPoint(e, t) {
    const x = K;
    return this[x(431)] != null ? this[x(431)] : this.autoCalcCtrlPoint(e, t);
  }
  [K(414)](e) {
    const t = K;
    this[t(431)] = e, this.matrixDirty = !![];
  }
  resetCtrlPoint() {
    const e = K;
    this[e(431)] = void 0, this.matrixDirty = !![];
  }
  getPoint(e) {
    let x = this[K(432)](), s = x[0], i = x[1], r = x[2], o = T.interpolate(s, i, e), a = T.interpolate(i, r, e);
    return T.interpolate(o, a, e);
  }
  getBeginArrowDirection() {
    let e = this.points[0], t = this.getPoint(0.01), x = [e.x - t.x, e.y - t.y];
    return B.normalize(x, x);
  }
  [K(428)]() {
    const e = K;
    let t = this.getPoint(0.9), x = this.points[this.points.length - 1], s = [x.x - t.x, x.y - t.y];
    return B[e(425)](s, s);
  }
}
_x([u("CurveLink")], Ge.prototype, "className", 2), _x([u(M[K(416)])], Ge.prototype, K(415), 2), _x([u(function() {
  return ["begin", "end", "ctrlPoint"];
})], Ge.prototype, "getCtrlPoints", 2), _x([u(R.prototype.serializers.concat(["direction", "ctrlPoint"]))], Ge.prototype, K(413), 2);
const v0 = {};
v0[P.begin] = function() {
  return this.getPoints()[0];
}, v0[P.end] = function() {
  const n = K;
  let e = this.getPoints();
  return e[e[n(420)] - 1];
}, v0[P.center] = function() {
  let n = this.getPoints();
  return T.middle(n[0], n[1]);
}, v0[P.ctrlPoint] = function() {
  const n = K;
  if (this.ctrlPoint != null)
    return this.ctrlPoint;
  let e = this.getPoints();
  return this[n(412)](e[0], e[1]);
}, Ge.prototype[K(429)] = v0;
var ne = bs;
function bs(n, e) {
  var t = ys();
  return bs = function(x, s) {
    x = x - 343;
    var i = t[x];
    return i;
  }, bs(n, e);
}
(function(n, e) {
  for (var t = bs, x = n(); []; )
    try {
      var s = -parseInt(t(345)) / 1 * (parseInt(t(350)) / 2) + -parseInt(t(344)) / 3 * (-parseInt(t(343)) / 4) + -parseInt(t(353)) / 5 + parseInt(t(349)) / 6 * (parseInt(t(352)) / 7) + parseInt(t(355)) / 8 + -parseInt(t(354)) / 9 * (parseInt(t(359)) / 10) + -parseInt(t(347)) / 11 * (-parseInt(t(360)) / 12);
      if (s === e)
        break;
      x.push(x.shift());
    } catch {
      x.push(x.shift());
    }
})(ys, 647215);
var _c = Object[ne(346)], mc = Object.getOwnPropertyDescriptor, mx = (n, e, t, x) => {
  for (var s = x > 1 ? void 0 : x ? mc(e, t) : e, i = n.length - 1, r; i >= 0; i--)
    (r = n[i]) && (s = (x ? r(e, t, s) : r(s)) || s);
  return x && s && _c(e, t, s), s;
};
function ys() {
  var n = ["TipNode", "9420PCRSIg", "3809580epXIap", "32GvsvoX", "302595JmYgKU", "32649JYLVyF", "defineProperty", "11HFjsQg", "_textWidth", "116616txCNgN", "50utRLCR", "serializers", "329AcABGe", "1990800PNCOEh", "12060WTRZgR", "8688024ULRRHz", "prototype", "concat"];
  return ys = function() {
    return n;
  }, ys();
}
class L0 extends ce {
  constructor(e, t = 0, x = 0, s = 1, i = 1) {
    super(e, t, x, s, i);
  }
  resizeToFitText() {
    var e = ne;
    let x = this._computedStyle.calcGap();
    this._width = this[e(348)] + x, this._height = this._textHeight + x + this.arrowsSize;
  }
}
mx([u(ne(358))], L0[ne(356)], "className", 2), mx([u(8)], L0.prototype, "arrowsSize", 2), mx([u(new Je())], L0[ne(356)], "shape", 2), mx([u(ce[ne(356)].serializers[ne(357)](["arrowsSize"]))], L0.prototype, ne(351), 2);
var tt = _s;
function _s(n, e) {
  var t = ms();
  return _s = function(x, s) {
    x = x - 108;
    var i = t[x];
    return i;
  }, _s(n, e);
}
function ms() {
  var n = ["width", "addEventListener", "175XptGuu", "getOwnPropertyDescriptor", "createVideo", "14BjGtVT", "setVideo", "791130BGjSaS", "pause", "_paintText", "94124ZfqcRT", "2321562sMSzvS", "stroke", "_dom", "_video", "rect", "play", "6358744BvtrFj", "concat", "defineProperty", "1444962lpaLiw", "7375320nrvXlU", "prototype", "onPlay", "VideoNode", "serializers", "height", "1434453GuumhM"];
  return ms = function() {
    return n;
  }, ms();
}
(function(n, e) {
  for (var t = _s, x = n(); []; )
    try {
      var s = -parseInt(t(130)) / 1 + parseInt(t(114)) / 2 + parseInt(t(123)) / 3 + parseInt(t(113)) / 4 * (-parseInt(t(133)) / 5) + parseInt(t(110)) / 6 * (-parseInt(t(108)) / 7) + parseInt(t(120)) / 8 + parseInt(t(124)) / 9;
      if (s === e)
        break;
      x.push(x.shift());
    } catch {
      x.push(x.shift());
    }
})(ms, 735010);
var Ic = Object[tt(122)], wc = Object[tt(134)], Qs = (n, e, t, x) => {
  for (var s = x > 1 ? void 0 : x ? wc(e, t) : e, i = n.length - 1, r; i >= 0; i--)
    (r = n[i]) && (s = (x ? r(e, t, s) : r(s)) || s);
  return x && s && Ic(e, t, s), s;
};
class T0 extends D {
  constructor(e, t = 0, x = 0, s = 1, i = 1) {
    var r = tt;
    super(), this._isPlaying = ![], this.text = e, this.x = t || 0, this.y = x || 0, this.width = s || 0, this[r(129)] = i || 0;
  }
  showCover() {
    this._isPlaying = ![];
  }
  [tt(119)]() {
    var e = tt;
    this._isPlaying = !![], this[e(117)][e(119)]();
  }
  pause() {
    var e = tt;
    this._video[e(111)]();
  }
  [tt(109)](e) {
    var t = tt;
    const x = this;
    this._dom != null && (this._dom.remove(), this._dom = null), typeof e == "string" ? (this._videoSrc = e, this._video = Be[t(135)](e, function() {
      x.autoplay && x.play();
    }), this[t(116)] = this[t(117)]) : (this._video = e, this._videoSrc = e.firstElementChild.getAttribute("src")), this._video.width = this.width, this._video[t(129)] = this[t(129)];
  }
  [tt(126)](e) {
    this._video.addEventListener("play", e, ![]);
  }
  onPause(e) {
    var t = tt;
    this._video[t(132)]("pause", e, ![]);
  }
  onEnded(e) {
    this._video.addEventListener("ended", e, ![]);
  }
  draw(e) {
    var t = tt;
    e.beginPath();
    const x = -this[t(131)] * 0.5, s = -this.height * 0.5;
    if (e[t(118)](x, s, this.width, this.height), this._video != null) {
      this[t(117)][t(131)] != this.width && (this._video.width = this.width, this[t(117)][t(129)] = this.height);
      let i = this._isPlaying ? this._video : this._image;
      i != null && e.drawImage(i, x, s, this[t(131)], this.height);
    } else
      e[t(115)]();
    this.mousePickupPath(e), this[t(112)](e);
  }
  destory() {
    super.destory(), this._dom && this._dom.remove();
  }
}
Qs([u(tt(127))], T0.prototype, "className", 2), Qs([u(![])], T0[tt(125)], "autoplay", 2), Qs([u(D.prototype.serializers[tt(121)](["autoplay", "videoSrc"]))], T0[tt(125)], tt(128), 2), Object.defineProperties(T0.prototype, { videoSrc: { get() {
  return this._videoSrc;
}, set(n) {
  this.setVideo(n);
} } });
const ut = rx;
(function(n, e) {
  const t = rx, x = n();
  for (; []; )
    try {
      if (parseInt(t(424)) / 1 + parseInt(t(426)) / 2 + parseInt(t(422)) / 3 * (-parseInt(t(433)) / 4) + parseInt(t(435)) / 5 * (parseInt(t(418)) / 6) + -parseInt(t(415)) / 7 + parseInt(t(430)) / 8 + -parseInt(t(421)) / 9 === e)
        break;
      x.push(x.shift());
    } catch {
      x.push(x.shift());
    }
})(Is, 645902);
var gi = function() {
};
function Is() {
  const n = ["39213Yeakcf", "edges", "463869CWQOvX", "maxForceDistance", "2328986ECmMnG", "origin", "addNode", "calculate", "7311808OHidFI", "addLink", "originWeight", "36YGDIxX", "Error Adding Edge: ", "25Clmhfg", "mass", "originEdges", "applyForce", "selectedNode", "attractiveForce", "isNode", "initNodes", "5597333Orglom", "nodes", "force", "1214634cewuQX", "neighbors", "frame_height", "17922357cgpDDe"];
  return Is = function() {
    return n;
  }, Is();
}
function rx(n, e) {
  const t = Is();
  return rx = function(x, s) {
    return x = x - 410, t[x];
  }, rx(n, e);
}
gi.prototype = { calculate: function(n, e) {
  this.dx = n.x - e.x, this.dy = n.y - e.y, this.d2 = this.dx * this.dx + this.dy * this.dy, this.d = Math.sqrt(this.d2);
} };
class vc {
  constructor(e, t, x) {
    this.originEdges = [], this.frame_width = t, this.frame_height = x, this.origin = e, this.initialize(), this.initNodes(e);
  }
  [ut(414)](e) {
    let t = this;
    Gt.travel(e, function(x, s) {
      const i = rx;
      if (x[i(413)] && s != null) {
        let r = s, o = x;
        r == e && t.setOriginEdgeWeight(o, t.originWeight);
        let a = o.mass | 1;
        t.addNode(o, a);
        let c = 30;
        t[i(431)](r, o, c);
      }
    });
  }
  initialize() {
    const e = ut;
    this[e(432)] = 48, this.speed = 12, this.gravity = 50, this[e(425)] = 512, this.nodes = new Array(), this.edges = new Array(), this[e(437)] = new Array();
  }
  originForce(e, t) {
    const x = ut;
    if (this[x(437)][e.id]) {
      if (e.id != this.selectedNode) {
        let s = this.originEdges[e.id], i = (t.d - s) / s;
        e.force.x += i * (t.dx / t.d), e.force.y += i * (t.dy / t.d);
      }
    } else if (e.id != this[x(411)]) {
      let s = this.gravity * e.mass * this[x(427)].mass / t.d2, i = this.maxForceDistance - t.d;
      i > 0 && (s *= Math.log(i)), s < 1024 && (e.force.x -= s * t.dx / t.d, e.force.y -= s * t.dy / t.d);
    }
  }
  attractiveForce(e, t, x) {
    const s = ut;
    let i = this[s(423)][e.id][t.id];
    if (i += 3 * (e[s(419)] + t[s(419)]), i) {
      let r = (x.d - i) / i;
      e.id != this.selectedNode && (e[s(417)].x -= r * x.dx / x.d, e[s(417)].y -= r * x.dy / x.d), t.id != this[s(411)] && (t.force.x += r * x.dx / x.d, t.force.y += r * x.dy / x.d);
    }
  }
  repulsiveForce(e, t, x) {
    const s = ut;
    let i = this.gravity * e[s(436)] * t[s(436)] / x.d2, r = this[s(425)] - x.d;
    r > 0 && (i *= Math.log(r)), i < 1024 && (e.force.x += i * x.dx / x.d, e.force.y += i * x.dy / x.d);
  }
  doLayout() {
    this[ut(410)]();
  }
  [ut(410)]() {
    const e = ut;
    for (var t = 0; t < this.nodes.length; t++) {
      let s = this.nodes[t];
      for (var x = 0; x < this[e(416)].length; x++)
        if (t != x) {
          let r = this.nodes[x], o = new gi();
          o.calculate(s, r), this.getLink(s.id, r.id) != null && this[e(412)](s, r, o), t != this.selectedNode && this.repulsiveForce(s, r, o);
        }
      let i = new gi();
      i[e(429)](this.origin, s), this.originForce(s, i), s[e(417)].x *= this.speed, s.force.y *= this.speed, s.x += s.force.x, s.y += s.force.y, s.force.x = 0, s.force.y = 0;
    }
  }
  bounds(e) {
    const t = ut;
    let x = 12, s = x * 2 + 4, i = e.x, r = e.x + s, o = e.y, a = e.y + s;
    i < 0 && (e.x = 0), o < 0 && (e.y = 0), r > this.frame_width && (e.x = this.frame_width - s), a > this.frame_height && (e.y = this[t(420)] - s);
  }
  setOriginEdgeWeight(e, t) {
    this.originEdges[e.id] = t;
  }
  [ut(428)](e, t) {
    const x = ut;
    e.mass = t | 1, e.neighbors = e[x(419)] | 0, e[x(417)] = { x: 0, y: 0 }, this[x(416)].push(e);
  }
  getLink(e, t) {
    let s = this[ut(423)][e];
    return s == null ? null : s[t];
  }
  addLink(e, t, x) {
    const s = ut;
    !this[s(423)][e.id] && (this[s(423)][e.id] = new Object()), this[s(423)][e.id][t.id] = x;
    try {
      e.neighbors++, t[s(419)]++;
    } catch (i) {
      console.log(s(434) + i);
    }
  }
}
const Pt = ws;
(function(n, e) {
  const t = ws, x = n();
  for (; []; )
    try {
      if (parseInt(t(110)) / 1 * (parseInt(t(128)) / 2) + -parseInt(t(108)) / 3 + parseInt(t(115)) / 4 * (parseInt(t(123)) / 5) + -parseInt(t(127)) / 6 + parseInt(t(122)) / 7 * (parseInt(t(109)) / 8) + -parseInt(t(117)) / 9 * (parseInt(t(121)) / 10) + -parseInt(t(111)) / 11 * (-parseInt(t(120)) / 12) === e)
        break;
      x.push(x.shift());
    } catch {
      x.push(x.shift());
    }
})(vs, 351054);
function ws(n, e) {
  const t = vs();
  return ws = function(x, s) {
    return x = x - 107, t[x];
  }, ws(n, e);
}
function vs() {
  const n = ["2326KTQAdJ", "anticlockwise", "653196VxdUrY", "8FogfMT", "121aWtqJa", "154NbPSIS", "getPoint", "push", "length", "1708HUCChV", "updatePoints", "27vJpDjH", "Arc", "ArcLink", "261528fEUqtp", "535910ZraQPE", "1300782qtOtrn", "2290WXnIOd", "direction", "prototype", "defineProperty", "586032oIiKtz"];
  return vs = function() {
    return n;
  }, vs();
}
var kc = Object[Pt(126)], Sc = Object.getOwnPropertyDescriptor, Ix = (n, e, t, x) => {
  const s = Pt;
  for (var i = x > 1 ? void 0 : x ? Sc(e, t) : e, r = n[s(114)] - 1, o; r >= 0; r--)
    (o = n[r]) && (i = (x ? o(e, t, i) : o(i)) || i);
  return x && i && kc(e, t, i), i;
};
class M0 extends R {
  constructor(e, t, x, s, i) {
    super(e, t, x, s, i);
  }
  [Pt(112)](e) {
    const t = Pt;
    let x = this.getPoints(), s = x[0], i = x[x.length - 1], r = (s.x + i.x) / 2, o = (s.y + i.y) / 2, a = s.x - i.x, c = s.y - i.y, l = Math.sqrt(a * a + c * c) / 2, h = Math.atan2(c, a), d = h + Math.PI * e;
    return this[t(124)] == t(107) && (d = h - Math.PI * e), { x: r + l * Math.cos(d), y: o + l * Math.sin(d) };
  }
  [Pt(116)]() {
    const e = Pt;
    let t = this._calcAZ(), x = t[0], s = t[1], i = [x], r = { x: (x.x + s.x) * 0.5, y: (x.y + s.y) * 0.5 }, o = T.distancePoint(x, s) * 0.5;
    return i[e(113)]({ x: r.x, y: r.y - o }), i[e(113)]({ x: r.x, y: r.y + o }), i.push({ x: r.x - o, y: r.y }), i.push({ x: r.x + o, y: r.y }), i.push(s), i;
  }
}
Ix([u(Pt(119))], M0[Pt(125)], "className", 2), Ix([u(M[Pt(118)])], M0.prototype, "shape", 2), Ix([u(R[Pt(125)].serializers.concat(["direction"]))], M0.prototype, "serializers", 2), Ix([u("clockwise")], M0.prototype, Pt(124), 2);
const Z = Ss;
(function(n, e) {
  const t = Ss, x = n();
  for (; []; )
    try {
      if (-parseInt(t(380)) / 1 + parseInt(t(377)) / 2 + -parseInt(t(368)) / 3 * (-parseInt(t(356)) / 4) + -parseInt(t(363)) / 5 * (parseInt(t(365)) / 6) + parseInt(t(359)) / 7 * (-parseInt(t(358)) / 8) + -parseInt(t(371)) / 9 + -parseInt(t(373)) / 10 * (-parseInt(t(379)) / 11) === e)
        break;
      x.push(x.shift());
    } catch {
      x.push(x.shift());
    }
})(ks, 544366);
var Pc = Object[Z(367)], Oc = Object.getOwnPropertyDescriptor, $s = (n, e, t, x) => {
  for (var s = x > 1 ? void 0 : x ? Oc(e, t) : e, i = n.length - 1, r; i >= 0; i--)
    (r = n[i]) && (s = (x ? r(e, t, s) : r(s)) || s);
  return x && s && Pc(e, t, s), s;
};
function ks() {
  const n = ["3hFIagA", "autoCalcCtrlPoint", "getPoints", "6287832mrRvBU", "prototype", "110sUMURi", "ctrlPoint1", "shape", "resetCtrlPoint", "139524ANyYhT", "matrixDirty", "1578027AHCVbS", "366097HAylll", "3149384GCgNnI", "interpolate", "1924880ghMSnm", "7UblxUU", "setCtrlPoint2", "calcCtrlPoint2", "translateWith", "1465GaGnKM", "ctrlPoint2", "11988RWiiiH", "calcCtrlPoint1", "defineProperty"];
  return ks = function() {
    return n;
  }, ks();
}
class A0 extends R {
  constructor(e, t, x, s, i) {
    super(e, t, x, s, i);
  }
  translateWith(e, t) {
    const x = Z;
    return super[x(362)](e, t), this.ctrlPoint1 != null && (this.ctrlPoint1.x += e, this[x(374)].y += t), this.ctrlPoint2 != null && (this.ctrlPoint2.x += e, this.ctrlPoint2.y += t), this;
  }
  setCtrlPoint1(e) {
    const t = Z;
    this[t(374)] = e, this[t(378)] = !![];
  }
  [Z(360)](e) {
    this.ctrlPoint2 = e, this.matrixDirty = !![];
  }
  [Z(369)](e, t, x) {
    let s = t.x - e.x, i = t.y - e.y, r = (t.x + e.x) / 2, o = (t.y + e.y) / 2, a = 1 - 0.618;
    return { x: r + s * a, y: o - i * a };
  }
  calcCtrlPoint1(e, t, x) {
    const s = Z;
    return this.ctrlPoint1 != null ? this[s(374)] : this.autoCalcCtrlPoint(e, x, t);
  }
  [Z(361)](e, t, x) {
    return this[Z(364)] != null ? this.ctrlPoint2 : this.autoCalcCtrlPoint(t, x, e);
  }
  [Z(376)]() {
    this.ctrlPoint1 = void 0, this.ctrlPoint2 = void 0, this.matrixDirty = !![];
  }
  getPoint(e) {
    const t = Z;
    let x = this[t(370)](), s = x[0], i = x[1];
    x[2];
    let r = x[3], o = x[4], a = i, c = r, l = T[t(357)](s, a, e), h = T.interpolate(a, c, e), d = T.interpolate(c, o, e), p = T.interpolate(l, h, e), b = T.interpolate(h, d, e);
    return T[t(357)](p, b, e);
  }
  updatePoints() {
    const e = Z, t = this._calcAZ(), x = t[0], s = t[1];
    let i = { x: (x.x + s.x) / 2, y: (x.y + s.y) / 2 }, r = this[e(366)](x, s, i), o = this.calcCtrlPoint2(x, s, i);
    return [x, r, i, o, s];
  }
}
$s([u("BezierLink")], A0.prototype, "className", 2), $s([u(M.BezierCurve)], A0[Z(372)], Z(375), 2), $s([u(R.prototype.serializers.concat([Z(374), Z(364)]))], A0.prototype, "serializers", 2);
const Xe = {};
function Ss(n, e) {
  const t = ks();
  return Ss = function(x, s) {
    return x = x - 356, t[x];
  }, Ss(n, e);
}
Xe[P.begin] = function() {
  return this[Z(370)]()[0];
}, Xe[P.end] = function() {
  let n = this.getPoints();
  return n[n.length - 1];
}, Xe[P.center] = function() {
  return this.getPoint(0.5, 0);
}, Xe[P.ctrlPoint1] = function() {
  return this.ctrlPoint1 != null ? this.ctrlPoint1 : this.getPoints()[1];
}, Xe[P.ctrlPoint2] = function() {
  const n = Z;
  return this.ctrlPoint2 != null ? this.ctrlPoint2 : this[n(370)]()[3];
}, A0[Z(372)].DefaultPositions = Xe;
var B0 = ox;
(function(n, e) {
  for (var t = ox, x = n(); []; )
    try {
      var s = parseInt(t(461)) / 1 + parseInt(t(453)) / 2 * (parseInt(t(460)) / 3) + parseInt(t(450)) / 4 * (parseInt(t(462)) / 5) + parseInt(t(452)) / 6 + -parseInt(t(451)) / 7 + -parseInt(t(449)) / 8 * (-parseInt(t(464)) / 9) + parseInt(t(463)) / 10 * (-parseInt(t(454)) / 11);
      if (s === e)
        break;
      x.push(x.shift());
    } catch {
      x.push(x.shift());
    }
})(Ps, 131796);
function ox(n, e) {
  var t = Ps();
  return ox = function(x, s) {
    x = x - 449;
    var i = t[x];
    return i;
  }, ox(n, e);
}
var Cc = Object.defineProperty, Ec = Object.getOwnPropertyDescriptor, Lc = (n, e, t, x) => {
  for (var s = x > 1 ? void 0 : x ? Ec(e, t) : e, i = n.length - 1, r; i >= 0; i--)
    (r = n[i]) && (s = (x ? r(e, t, s) : r(s)) || s);
  return x && s && Cc(e, t, s), s;
};
function Ps() {
  var n = ["208NsfVyg", "5024UwFtFu", "637147smJnCU", "1346652uJDLxs", "32IRgDlU", "52690ZdRYaU", "clearPath", "path", "path length is less than 2", "target", "prototype", "36891EFcYjS", "69295XGvbww", "205ogHfCO", "940VxosNB", "45378MCcldq", "className"];
  return Ps = function() {
    return n;
  }, Ps();
}
class Ci extends R {
  constructor(e, t, x, s, i) {
    super(e, t, x, s, i);
  }
  getPath() {
    var e = ox;
    return this[e(456)].endpoints;
  }
  [B0(455)]() {
    var e = B0;
    const t = this[e(456)].endpoints;
    for (let x = 1; x < t.length - 1; x++) {
      let s = t[x];
      s.isDisplayObjectTarget() && s[e(458)].removeOutLink(this);
    }
    t.length = 0;
  }
  setPath(e) {
    var t = B0;
    if (e.length < 2)
      throw new Error(t(457));
    this.clearPath(), super._setEndpoints(e), this.matrixDirty = !![];
  }
}
Lc([u("PathLink")], Ci[B0(459)], B0(465), 2);
function Os() {
  const n = ["1331040kpinpO", "720220OBwdxk", "10bDGpYB", "8BkQuYH", "39506ueMLTD", "#1ba784", "5826CGWrbU", "3059CpLZix", "711657EVpWIQ", "#2474b5", "#FA7E23", "3138579wLKtPM", "#5e5314", "9DwEnAa", "859078PTrMCR", "#248067", "#7e2065"];
  return Os = function() {
    return n;
  }, Os();
}
const Ue = Cs;
(function(n, e) {
  const t = Cs, x = n();
  for (; []; )
    try {
      if (parseInt(t(266)) / 1 * (-parseInt(t(274)) / 2) + -parseInt(t(278)) / 3 * (-parseInt(t(273)) / 4) + parseInt(t(271)) / 5 + parseInt(t(276)) / 6 * (-parseInt(t(277)) / 7) + -parseInt(t(270)) / 8 + -parseInt(t(264)) / 9 * (-parseInt(t(272)) / 10) + parseInt(t(267)) / 11 === e)
        break;
      x.push(x.shift());
    } catch {
      x.push(x.shift());
    }
})(Os, 276827);
const Xi = ["#475164", "#2d2e36", Ue(263), "#FF9900", "#FED71A", "#2bae85", Ue(268), "#12A182", Ue(265), Ue(275), "#0f1423", "#4E7ca1", Ue(279), "#2775B6", "#346c9c", "#61649f", "#C06f98", Ue(269), "#681752", "#EE3f4d", "#C02c38"];
function Cs(n, e) {
  const t = Os();
  return Cs = function(x, s) {
    return x = x - 263, t[x];
  }, Cs(n, e);
}
function Tc() {
  let n = Math.random() * Xi.length | 0;
  return Xi[n];
}
const V = ax;
(function(n, e) {
  const t = ax, x = n();
  for (; []; )
    try {
      if (parseInt(t(298)) / 1 + -parseInt(t(303)) / 2 + -parseInt(t(291)) / 3 + -parseInt(t(297)) / 4 * (-parseInt(t(293)) / 5) + parseInt(t(283)) / 6 + parseInt(t(279)) / 7 + parseInt(t(299)) / 8 * (parseInt(t(280)) / 9) === e)
        break;
      x.push(x.shift());
    } catch {
      x.push(x.shift());
    }
})(Es, 751642);
function Es() {
  const n = ["3489234Nhiugh", "addAction", "2499720TpbCYO", "turnLeft", "init", "mark's name is required.", "8dtayye", "1377895vfBlWw", "6952OruVUF", "forward", "forwardToMark", "sin", "2778138mhdxnV", "moveTo", "updateDxy", "_position", "5089294nosYPF", "1899NNscMF", "marks", "position", "93630VREHCR", "faceTo", "jump", "getMark", "length", "_direction", "forwardTo", "_stepSize"];
  return Es = function() {
    return n;
  }, Es();
}
const D0 = class {
  constructor() {
    const n = ax;
    this[n(282)] = { x: 0, y: 0 }, this.direction = 0, this.stepSize = 1, this.dx = 1, this.dy = 1, this[n(295)]();
  }
  [V(295)]() {
    const n = V;
    return this._position = { x: 0, y: 0 }, this._actions = [], this[n(281)] = {}, this;
  }
  addAction(n, e) {
    let t = { name: n, args: e };
    return this._actions.push(t), this;
  }
  mark(n) {
    const e = V;
    if (n == null)
      throw new Error(e(296));
    return this.marks[n] = { x: this._position.x, y: this[e(278)].y }, this;
  }
  getMark(n) {
    return this.marks[n];
  }
  faceToMark(n) {
    const e = V;
    let t = this.getMark(n);
    return this[e(284)](t);
  }
  moveToMark(n) {
    let e = this.getMark(n);
    return this.moveTo(e);
  }
  [V(301)](n) {
    let t = this[V(286)](n);
    return this.forwardTo(t);
  }
  forwardToMarks(n) {
    const e = V;
    for (let t = 0; t < n[e(287)]; t++) {
      const x = n[t], s = this.getMark(x);
      this[e(289)](s);
    }
    return this;
  }
  updateDxy() {
    const n = V;
    let e = this[n(278)], t = this._direction, x = this[n(290)], s = e.x + x * Math.cos(t), i = e.y + x * Math[n(302)](t);
    return this.dx = s - e.x, this.dy = i - e.y, this;
  }
  [V(284)](n) {
    const e = n.x, t = n.y;
    return this._direction = Math.atan2(t - this._position.y, e - this._position.x), this.updateDxy(), this;
  }
  forward(n) {
    const e = V;
    return this.size(n), this._position.x += this.dx, this._position.y += this.dy, this[e(292)](D0.OP.forward, [this._position.x, this._position.y]), this;
  }
  [V(285)](n) {
    const e = V;
    n == null && (n = 1);
    for (var t = 0; t < n; t++)
      this[e(278)].x += this.dx, this._position.y += this.dy, this.addAction(D0.OP[e(285)], [this._position.x, this._position.y]);
    return this;
  }
  moveTo(n) {
    const e = V, t = n.x, x = n.y;
    return this._position.x = t, this[e(278)].y = x, this[e(292)](D0.OP[e(304)], [this._position.x, this._position.y]), this;
  }
  moveToMiddle(n, e) {
    let t = { x: (n.x + e.x) / 2, y: (n.y + e.y) / 2 };
    return this.moveTo(t);
  }
  forwardTo(n) {
    const e = V, t = n.x, x = n.y;
    return this[e(278)].x = t, this._position.y = x, this.addAction(D0.OP.forwardTo, [this._position.x, this._position.y]), this;
  }
  [V(294)](n) {
    const e = V;
    return n == null && (n = Math.PI / 2), this._direction = this[e(288)] - n, this.updateDxy(), this;
  }
  turnRight(n) {
    const e = V;
    return n == null && (n = -Math.PI / 2), this._direction = this._direction + n, this[e(305)](), this;
  }
  size(n) {
    const e = V;
    return this[e(290)] = n, this.updateDxy(), this;
  }
  sizeBy(n) {
    return this._stepSize *= n, this.updateDxy(), this;
  }
  sizeWith(n) {
    return this._stepSize += n, this.updateDxy(), this;
  }
  getDistance(n) {
    const e = V, t = n.x, x = n.y;
    let s = t - this._position.x, i = x - this[e(278)].y;
    return Math.sqrt(s * s + i * i);
  }
  getAngle(n) {
    const e = n.x, t = n.y;
    return Math.atan2(t - this._position.y, e - this._position.x);
  }
};
let Yr = D0;
Yr.OP = { forward: V(300), forwardTo: "forwardTo", moveTo: "moveTo", jump: "jump" };
function ax(n, e) {
  const t = Es();
  return ax = function(x, s) {
    return x = x - 278, t[x];
  }, ax(n, e);
}
const _t = Ls;
(function(n, e) {
  const t = Ls, x = n();
  for (; []; )
    try {
      if (parseInt(t(328)) / 1 + parseInt(t(336)) / 2 * (parseInt(t(326)) / 3) + parseInt(t(327)) / 4 * (parseInt(t(335)) / 5) + parseInt(t(331)) / 6 + -parseInt(t(333)) / 7 + parseInt(t(319)) / 8 * (-parseInt(t(316)) / 9) + -parseInt(t(329)) / 10 * (parseInt(t(321)) / 11) === e)
        break;
      x.push(x.shift());
    } catch {
      x.push(x.shift());
    }
})(Ts, 996672);
function Ls(n, e) {
  const t = Ts();
  return Ls = function(x, s) {
    return x = x - 312, t[x];
  }, Ls(n, e);
}
var Ui = { forward: _t(318), forwardTo: "lineTo", moveTo: "moveTo", jump: "moveTo" };
function Ts() {
  const n = ["24189rgRpCC", "();", "stroke", "toCmds", "style", "21hHlWKf", "12UjZmdv", "1841093LsyoeQ", "7330WYSZAb", "arc", "1060026TOLsVl", "push", "9189194JvqZKU", "fill", "3277565opsIeL", "269966uZSind", "length", "beginPath", "addAction", `var path = new Path2D();
`, "toCmd", "string", "_position", "279izwPZO", "name", "lineTo", "260104OzIzaR", "path."];
  return Ts = function() {
    return n;
  }, Ts();
}
class Mc extends Yr {
  constructor() {
    super();
  }
  applyTo(e) {
    const t = _t;
    let x = this._actions;
    for (let s = 0; s < x[t(337)]; s++) {
      const i = x[s];
      let r = Ui[i[t(317)]];
      const o = i.args;
      r == null && (r = i.name);
      let a = e[r];
      if (a == null)
        throw new Error("applyTo's target has no method:" + r);
      if (o == null) {
        a.apply(e, []);
        continue;
      }
      o.length ? a.apply(e, o) : e[r] = o;
    }
    return this;
  }
  toFunction() {
    let e = this.toCmd();
    return new Function("ctx", e);
  }
  toPath2D() {
    const e = _t;
    let t = this[e(313)](e(320));
    return t = e(312) + t, t = t + `
 return path;`, new Function("path", t)();
  }
  [_t(313)](e) {
    return this[_t(324)](e).join(`
`);
  }
  toCmds(e) {
    const t = _t;
    let x = this._actions, s = [];
    e == null && (e = "ctx.");
    for (let i = 0; i < x[t(337)]; i++) {
      const r = x[i];
      let o = Ui[r.name];
      const a = r.args;
      if (o == null && (o = r.name), a == null) {
        s.push(e + o + t(322));
        continue;
      }
      a.length ? s[t(332)](e + o + "(" + Vi(a) + ");") : s.push(e + o + "=" + Vi(a) + ";");
    }
    return s;
  }
  circle(e) {
    const t = _t;
    return this.addAction(t(330), [this._position.x, this[t(315)].y, e, 0, Math.PI * 2]), this;
  }
  [_t(325)](e, t) {
    return this.addAction(e, t), this;
  }
  text(e) {
    return this.addAction("fillText", [e, this._position.x, this._position.y]), this;
  }
  lineTo(e) {
    return this.forwardTo(e), this;
  }
  beginPath() {
    const e = _t;
    return this[e(339)](e(338)), this;
  }
  stroke() {
    const e = _t;
    return this.addAction(e(323)), this;
  }
  fill() {
    const e = _t;
    return this.addAction(e(334)), this;
  }
  save() {
    return this.addAction("save"), this;
  }
  restore() {
    return this.addAction("restore"), this;
  }
}
function Vi(n) {
  const e = _t;
  if (!Array.isArray(n) && typeof n == "string")
    return '"' + n + '"';
  let t = "";
  for (let x = 0; x < n.length; x++) {
    let s = n[x];
    typeof s == e(314) ? t += '"' + s + '"' : t += "" + s, x + 1 < n[e(337)] && (t += ",");
  }
  return t;
}
function Ms() {
  const n = ["268272ISiJYU", "opacity", "5363820pTscNY", "18567968udpUEQ", "drawImage", "scale", "naturalWidth", "16bkCchC", "style", "html", "getContext", "img", "75819UlVleA", "setAttribute", "width", '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink= "http://www.w3.org/1999/xlink" width="', "replace", "px;height:", "1148320xZvWmG", 'px" /></svg>', `;">
        '</foreignObject>`, 'px" width="', "157445XcZvKd", "querySelector", "onload", "image/png", "11049852zzTfEr", "isHtmlImage", "length", "src", "canvas", "HtmlImage", "svg", "height"];
  return Ms = function() {
    return n;
  }, Ms();
}
(function(n, e) {
  const t = Kt, x = n();
  for (; []; )
    try {
      if (parseInt(t(303)) / 1 + parseInt(t(319)) / 2 + -parseInt(t(297)) / 3 * (parseInt(t(292)) / 4) + parseInt(t(307)) / 5 + -parseInt(t(311)) / 6 + -parseInt(t(321)) / 7 + parseInt(t(322)) / 8 === e)
        break;
      x.push(x.shift());
    } catch {
      x.push(x.shift());
    }
})(Ms, 925947);
function Dc(n, e, t) {
  const x = Kt;
  t = t | 1;
  const s = document.createElementNS("http://www.w3.org/2000/svg", x(317));
  return s[x(298)]("xmlns", "http://www.w3.org/2000/svg"), s[x(293)] = "border:0px;position:absolute;top:0px;left:0px;text-align:center;z-index:10;width:" + n + x(302) + e + "px;opacity:" + t + ";", s.innerHTML = '<foreignObject width="100%" height="100%" style="position:absolute;top:0;left:0; opacity: ' + t + x(305), s;
}
function Ac(n) {
  const e = Kt;
  let t = document.createElement("canvas");
  t.width = n.style.width ? +n[e(293)][e(299)] : n.width, t[e(318)] = n.style.height ? +n[e(293)].height : n.height;
  let x = t.getContext("2d");
  return x[e(324)](t[e(299)] / n[e(325)], t[e(318)] / n.naturalHeight), x[e(323)](n, 0, 0), e(300) + n.width + '" height="' + n[e(318)] + '" display="inline" style="vertical-align: middle;display: inline-block"><image xlink:href="' + t.toDataURL(e(310)) + '" height="' + n.height + e(306) + n.width + e(304);
}
async function Bc(n) {
  const e = n.replace(/\<br\>/gi, "<div/>"), t = e.match(/<img .*?>/g);
  if (t == null || t.length == 0)
    return new Promise(function(s) {
      s([[], []]);
    });
  const x = [];
  return new Promise(function(s) {
    t.forEach(function(i) {
      const r = Kt, o = document.createElement("div");
      o.innerHTML = i;
      const a = o.querySelector(r(296));
      a[r(309)] = function() {
        const c = r, l = Ac(a);
        x.push(l), x[c(313)] == t.length && s([t, x]);
      };
    });
  });
}
function Kt(n, e) {
  const t = Ms();
  return Kt = function(x, s) {
    return x = x - 292, t[x];
  }, Kt(n, e);
}
class Nc {
  constructor(e, t, x, s = 1) {
    const i = Kt;
    this[i(312)] = !![], this.width = 1, this.height = 1, this[i(320)] = 1, this.isHtmlImage = !![], e !== null && e.startsWith("HtmlImage") && (e = e.substring(i(316).length)), this[i(294)] = e, this.width = t, this[i(318)] = x, this.opacity = s | 1, this.svg = Dc(t, x, this[i(320)]), this.canvas = document.createElement(i(315));
  }
  setSize(e, t) {
    this.width = e, this.height = t;
  }
  getAttribute(e) {
    if (e != "src")
      throw new Error("HtmlImage has only src attr");
    return "HtmlImage" + this.html;
  }
  setHtml(e) {
    this.html = e;
  }
  getCanvas() {
    const e = Kt;
    let t = this.html;
    const x = this.svg, s = this;
    let i = s.canvas, r = i[e(295)]("2d");
    return i.style.width = s.width + "px", i.style.height = s.height + "px", i[e(299)] = s.width, i.height = s.height, new Promise(function(o) {
      Bc(t).then(function(a) {
        const c = Kt, l = a[0], h = a[1];
        for (let b = 0; b < l.length; b++)
          t = t[c(301)](l[b], h[b]);
        const d = x[c(308)]("foreignObject");
        d.innerHTML = t;
        let p = new Image();
        p[c(314)] = "data:image/svg+xml;charset=utf-8," + encodeURIComponent(s.svg.outerHTML), p.onload = function() {
          const b = c;
          r[b(323)](p, 0, 0, s[b(299)], s.height), o(i);
        };
      });
    });
  }
}
const Ji = d0;
(function(n, e) {
  const t = d0, x = n();
  for (; []; )
    try {
      if (parseInt(t(359)) / 1 + -parseInt(t(364)) / 2 + -parseInt(t(355)) / 3 * (-parseInt(t(361)) / 4) + -parseInt(t(351)) / 5 + -parseInt(t(370)) / 6 * (parseInt(t(353)) / 7) + -parseInt(t(350)) / 8 * (-parseInt(t(360)) / 9) + -parseInt(t(358)) / 10 * (-parseInt(t(369)) / 11) === e)
        break;
      x.push(x.shift());
    } catch {
      x.push(x.shift());
    }
})(Ds, 131220);
function Ds() {
  const n = ["left", "direction", "concat", "11IOSOWN", "82122FZntrH", "height", "32JlujTe", "498225Rymkbu", "fillStyle", "42MwDDNz", "padding", "3JZcEBE", "mousePickupPath", "length", "111830NgGogy", "215663lCbsTj", "240579oBRgPa", "213324VkgapC", "_computedStyle", "RatioNode", "148228Rkhhrr", "width"];
  return Ds = function() {
    return n;
  }, Ds();
}
var jc = Object.defineProperty, zc = Object.getOwnPropertyDescriptor, Gi = (n, e, t, x) => {
  const s = d0;
  for (var i = x > 1 ? void 0 : x ? zc(e, t) : e, r = n[s(357)] - 1, o; r >= 0; r--)
    (o = n[r]) && (i = (x ? o(e, t, i) : o(i)) || i);
  return x && i && jc(e, t, i), i;
};
function d0(n, e) {
  const t = Ds();
  return d0 = function(x, s) {
    return x = x - 350, t[x];
  }, d0(n, e);
}
class bi extends D {
  constructor(e, t = 0, x = 0, s = 1, i = 1) {
    super(e, t, x, s, i), this.ratio = 0.5, this.direction = P.right;
  }
  draw(e) {
    const t = d0;
    let x = this[t(362)], s = x[t(352)];
    x.fillStyle = null, this._strokeAndFill(e), this[t(356)](e), x.fillStyle = s, e.beginPath(), e[t(352)] = s;
    let i = x.borderWidth || 0, r = x[t(354)] || 0, o = r * 2 + i * 2, a = -this.width * 0.5 + i + r, c = -this.height * 0.5 + i + r, l = (this.width - o) * this.ratio, h = (this.height - o) * this.ratio;
    if (this[t(367)] == P.right)
      h = this[t(371)] - o;
    else if (this.direction == P.down)
      l = this.width - o;
    else if (this.direction == P[t(366)])
      a = -this[t(365)] * 0.5 + this.width - i - r - l, h = this.height - o;
    else if (this.direction == P.up)
      c = -this.height * 0.5 + this[t(371)] - i - r - h, l = this.width - o;
    else
      throw new Error("Unknow RatioNode's direction:" + this.direction);
    e.rect(a, c, l, h), e.fill(), this._paintText(e);
  }
}
Gi([u(Ji(363))], bi.prototype, "className", 2), Gi([u(D.prototype.serializers[Ji(368)](["ratio", "direction"]))], bi.prototype, "serializers", 2);
const wx = oe;
(function(n, e) {
  const t = oe, x = n();
  for (; []; )
    try {
      if (-parseInt(t(157)) / 1 + -parseInt(t(168)) / 2 * (parseInt(t(154)) / 3) + parseInt(t(158)) / 4 * (-parseInt(t(155)) / 5) + parseInt(t(156)) / 6 * (-parseInt(t(171)) / 7) + -parseInt(t(166)) / 8 + parseInt(t(160)) / 9 + parseInt(t(161)) / 10 === e)
        break;
      x.push(x.shift());
    } catch {
      x.push(x.shift());
    }
})(As, 543077);
function As() {
  const n = ["453277sICiFH", "44wNcISc", "style", "5063292kAddGA", "21449090URgvjS", "item", "jtopo_popoupmenu", "createElement", "height", "952656EZEztJ", "remove", "349458JdGxqm", "hide", "width", "5032559RSRuZo", "offsetWidth", "querySelectorAll", "showAt", "layersContainer", "domElement", "6Llkzug", "238030AOSlDr", "6FVDXWD"];
  return As = function() {
    return n;
  }, As();
}
class Rc extends Et {
  constructor(e, t) {
    super(), this.stage = e, this.domElement = this.setHtml(t);
  }
  remove() {
    const e = oe;
    this.domElement != null && this[e(176)].remove();
  }
  setHtml(e) {
    const t = oe;
    this.html = e, this[t(167)]();
    let x = document[t(164)]("div");
    return x.classList.add(t(163)), this.stage[t(175)].appendChild(x), x.innerHTML = e, this.initEvent(x), this.domElement = x, this[t(169)](), x;
  }
  initEvent(e) {
    const t = oe;
    let x = this;
    e[t(173)]("a").forEach(function(i) {
      i.addEventListener("click", function(r) {
        const o = oe;
        let a = new Event("select", { cancelable: !![] });
        a[o(162)] = this.innerHTML, x.dispatchEvent(a), !a.defaultPrevented && x[o(169)]();
      });
    });
  }
  [wx(174)](e, t) {
    const x = wx;
    this.domElement.style.display = "block", t + this[x(176)].offsetHeight >= this.stage[x(165)] && t > this.stage.height / 2 && (t -= this.domElement.offsetHeight), e + this.domElement.offsetWidth >= this.stage.width && e > this.stage[x(170)] / 2 && (e -= this.domElement[x(172)]), this.domElement.style.left = e + "px", this.domElement[x(159)].top = t + "px";
  }
  [wx(169)]() {
    const e = wx;
    this.domElement[e(159)].display = "none";
  }
}
function oe(n, e) {
  const t = As();
  return oe = function(x, s) {
    return x = x - 154, t[x];
  }, oe(n, e);
}
const ti = Nt;
(function(n, e) {
  const t = Nt, x = n();
  for (; []; )
    try {
      if (parseInt(t(354)) / 1 * (-parseInt(t(358)) / 2) + -parseInt(t(341)) / 3 * (-parseInt(t(345)) / 4) + -parseInt(t(350)) / 5 * (parseInt(t(338)) / 6) + parseInt(t(357)) / 7 * (-parseInt(t(359)) / 8) + parseInt(t(353)) / 9 * (parseInt(t(360)) / 10) + parseInt(t(346)) / 11 + parseInt(t(348)) / 12 * (parseInt(t(342)) / 13) === e)
        break;
      x.push(x.shift());
    } catch {
      x.push(x.shift());
    }
})(Bs, 972155);
function Bs() {
  const n = ["2777706kBQAti", "19gxAQVa", "stage", "domElement", "880019bAOsEQ", "179978dDRwLx", "104FMZbWV", "50GCeyiy", "layersContainer", "6zkgYOY", "showAt", "hide", "17439gvrXpv", "13CPybUp", "mouseup", "stopFade", "460lHUiBw", "6239519YPebID", "opacity", "40390212PjnZbt", "style", "9142390lPhFex", "block", "appendChild"];
  return Bs = function() {
    return n;
  }, Bs();
}
class Wc extends Et {
  constructor(e) {
    const t = Nt;
    super(), this[t(355)] = e, this.domElement = document.createElement("div"), this.domElement.classList.add("jtopo_tooltip"), this.stage.layersContainer[t(352)](this.domElement), this.initEvent(), this[t(340)]();
  }
  disable() {
    const e = Nt;
    this.domElement && this[e(356)].remove();
  }
  enabled() {
    const e = Nt;
    this[e(356)] && this.domElement.parentNode == null && this.stage[e(361)].appendChild(this.domElement);
  }
  setHtml(e) {
    const t = Nt;
    return this.domElement.innerHTML = e, this[t(356)];
  }
  initEvent() {
    const e = Nt, t = this, x = this[e(355)].inputSystem;
    x.on("mousedown", function() {
      t.hide();
    }), x.on(e(343), function() {
      t.hide();
    }), x.on("mousemove", function() {
      x.mouseoverTarget == null && t.fadeOut();
    });
  }
  [ti(339)](e, t) {
    const x = ti;
    this[x(344)](), this.domElement.style.display = x(351), this.domElement.style.left = e + "px", this[x(356)].style.top = t + "px", this[x(356)].style[x(347)] = "0.9";
  }
  hide() {
    this[ti(344)](), this.domElement.style.display = "none";
  }
  stopFade() {
    this.fadeoutTimer != null && (clearInterval(this.fadeoutTimer), this.fadeoutTimer = null);
  }
  fadeOut(e = 50) {
    if (this.fadeoutTimer != null)
      return;
    let t = this;
    this.fadeoutTimer = setInterval(function() {
      const x = Nt;
      t.domElement[x(349)][x(347)] -= 0.1, t.domElement[x(349)].opacity <= 0.1 && t[x(340)]();
    }, e);
  }
}
function Nt(n, e) {
  const t = Bs();
  return Nt = function(x, s) {
    return x = x - 338, t[x];
  }, Nt(n, e);
}
const Ve = f0;
(function(n, e) {
  const t = f0, x = n();
  for (; []; )
    try {
      if (parseInt(t(266)) / 1 * (-parseInt(t(270)) / 2) + -parseInt(t(261)) / 3 + -parseInt(t(274)) / 4 * (-parseInt(t(265)) / 5) + -parseInt(t(278)) / 6 + parseInt(t(259)) / 7 + -parseInt(t(273)) / 8 * (-parseInt(t(268)) / 9) + parseInt(t(263)) / 10 === e)
        break;
      x.push(x.shift());
    } catch {
      x.push(x.shift());
    }
})(Ns, 235622);
function Ns() {
  const n = ["top", "appendChild", "createElement", "488562qpnvFb", "stage", "height", "Enter", "1968505cDidmW", "text", "1123908beKGfI", "hide", "2241800ROxumZ", "display", "38155uAfBZF", "389842kseDsu", "onkeydown", "621knRTBb", "textarea", "2dMxFuY", "setSize", "value", "26984HVYSoL", "180GfCjHZ"];
  return Ns = function() {
    return n;
  }, Ns();
}
class Hc {
  constructor(e) {
    const t = f0;
    this.editor = e, this[t(279)] = e[t(279)];
    let x = document[t(277)]("textarea");
    x.classList.add("jtopo_input_textfield"), this.stage.layersContainer[t(276)](x);
    let s = this;
    x[t(267)] = function(i) {
      s.onkeydown(i);
    }, this[t(269)] = x;
  }
  attachTo(e, t) {
    const x = f0;
    let s = { x: t.x - 50, y: t.y };
    if (e.isNode) {
      let i = e.positionToLocalPoint(P.lt);
      s = e.toStageXY(i.x, i.y);
      let r = li(e.width, 60, 100), o = li(e.height, 60, 100);
      this.setSize(r, o);
    } else if (e.isLink)
      return;
    this.setValue(e[x(260)]), this.show(s.x, s.y);
  }
  setValue(e) {
    this.textarea.value = e;
  }
  [Ve(271)](e, t) {
    const x = Ve;
    this.textarea.style.width = e + "px", this[x(269)].style[x(257)] = t + "px";
  }
  show(e, t) {
    const x = Ve;
    this[x(269)].style[x(264)] = "block", this.textarea.focus(), e != null && (e = Math.max(0, e), t = Math.max(0, t), this[x(269)].style.left = e, this.textarea.style[x(275)] = t);
  }
  [Ve(262)]() {
    const e = Ve;
    this[e(269)].style.display = "none";
  }
  onkeydown(e) {
    const t = Ve;
    let x = this[t(269)];
    if (e.key == t(258) && (e.ctrlKey || e.metaKey)) {
      let s = this[t(279)].inputSystem.target;
      if (s == null)
        return;
      s.text = x[t(272)], x.style[t(264)] = "none", this[t(262)]();
    }
  }
}
function f0(n, e) {
  const t = Ns();
  return f0 = function(x, s) {
    return x = x - 257, t[x];
  }, f0(n, e);
}
function yi(n, e) {
  var t = js();
  return yi = function(x, s) {
    x = x - 115;
    var i = t[x];
    return i;
  }, yi(n, e);
}
(function(n, e) {
  for (var t = yi, x = n(); []; )
    try {
      var s = parseInt(t(121)) / 1 * (-parseInt(t(117)) / 2) + -parseInt(t(126)) / 3 * (-parseInt(t(127)) / 4) + -parseInt(t(123)) / 5 * (-parseInt(t(116)) / 6) + parseInt(t(120)) / 7 * (-parseInt(t(124)) / 8) + -parseInt(t(122)) / 9 + -parseInt(t(115)) / 10 * (parseInt(t(119)) / 11) + parseInt(t(118)) / 12 * (parseInt(t(125)) / 13);
      if (s === e)
        break;
      x.push(x.shift());
    } catch {
      x.push(x.shift());
    }
})(js, 127410);
function js() {
  var n = ["121803sjWGOm", "4LkITze", "10wLtZme", "6IebqiB", "168830MPdwWv", "6031164SZxXLw", "1753576FhngEn", "200095fnJntg", "1zudXLC", "1071441UNNmXB", "735935IMdsJL", "56TkfOCX", "13UMoyJJ"];
  return js = function() {
    return n;
  }, js();
}
(function(n, e) {
  for (var t = _i, x = n(); []; )
    try {
      var s = -parseInt(t(210)) / 1 + parseInt(t(206)) / 2 + parseInt(t(211)) / 3 + parseInt(t(209)) / 4 * (-parseInt(t(205)) / 5) + parseInt(t(212)) / 6 + parseInt(t(208)) / 7 + -parseInt(t(207)) / 8;
      if (s === e)
        break;
      x.push(x.shift());
    } catch {
      x.push(x.shift());
    }
})(zs, 320208);
function _i(n, e) {
  var t = zs();
  return _i = function(x, s) {
    x = x - 205;
    var i = t[x];
    return i;
  }, _i(n, e);
}
function zs() {
  var n = ["969864tPEEYy", "1648787zJvZzr", "128188mDpgAW", "547862LgcAct", "1787931RWNvKR", "485286iIVrsy", "45jJgSAm", "730654HazDFD"];
  return zs = function() {
    return n;
  }, zs();
}
const Xr = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
  __proto__: null,
  AENode: di,
  Animation: zr,
  AnimationSystem: Rr,
  ArcLink: M0,
  ArcShape: C0,
  ArrowShape: k0,
  AutoFoldLink: se,
  BezierCurveShape: O0,
  BezierLink: A0,
  CircleNode: Z0,
  CircleShape: ni,
  Collection: z,
  Config: je,
  Cursor: Zr,
  CurveLink: Ge,
  CurveShape: P0,
  Debug: le,
  DefaultDarkTheme: Pr,
  DefaultLightTheme: ve,
  DefaultZIndexs: cx,
  Direction: t0,
  DisplayObject: C,
  DomUtil: Be,
  Edge: fi,
  EffectSystem: Hr,
  EllipseShape: si,
  Endpoint: Rt,
  EndpointFixedName: De,
  EndpointFixedPoint: Jt,
  EndpointFunction: Fs,
  EndpointNearest: Ae,
  EndpointSegment: ux,
  EventNames: gt,
  EventTarget: Et,
  FlexionalLink: Ie,
  FoldLink: Q0,
  FontInfo: ye,
  FontUtil: ii,
  ForceDirectLayout: vc,
  Graph: xx,
  GraphSystem: h0,
  HandlerLayer: Ys,
  HtmlImage: Nc,
  ImageUtil: zt,
  InputEvent: G,
  InputSystem: Si,
  InputTextfield: Hc,
  Intersect: Hs,
  Keyboard: Ar,
  Layer: pt,
  LayerLocalDeep: Lx,
  Layout: Ox,
  LayoutSystem: Fr,
  LineShape: S0,
  LinearGradient: n0,
  Link: R,
  LinkHelper: tx,
  Node: D,
  NodeHelper: Gt,
  OBB: qt,
  PI2: N0,
  Path: ac,
  PathLink: Ci,
  Point: T,
  PopupMenu: Rc,
  Position: P,
  PositionInvertMap: Qr,
  RadialGradient: Y0,
  RatioNode: bi,
  RectDefaultPositions: ae,
  RectShape: vx,
  Rectangle: j,
  ResourceLoader: rt,
  Runtime: Lr,
  SelectedGroup: Br,
  SerializerSystem: qe,
  Shape: M,
  Stage: Oi,
  StageLocalDeep: Qi,
  StageMode: kt,
  Style: lt,
  StylePattern: me,
  StyleSystem: Wr,
  TextNode: ce,
  Theme: g0,
  TipNode: L0,
  TipShape: Je,
  Toolbar: Dr,
  Tooltip: Wc,
  TopoEvent: mo,
  TopoPainter: Mc,
  Transform: lx,
  VERSION: mi,
  Vertext: Qe,
  VideoNode: T0,
  clickEvent: ur,
  convertToEndpoint: Vt,
  copyKeyboardEvent: oi,
  copyMouseEvent: _o,
  dblclickEvent: dr,
  dragEndEvent: br,
  dragEvent: gr,
  dropEvent: _r,
  dropoutEvent: mr,
  dropoverEvent: yr,
  getClass: Ii,
  getEndpointNormal: hi,
  getLineIntersectPoint: hn,
  getLineIntersectPoints: vr,
  getNearestAnchorOnObjects: Ao,
  getNearestPointOnLines: vi,
  getNearestPointOnObjectsOBB: Do,
  getNearestPositionName: Bo,
  getParallelLine: Co,
  getParallelLines: Oo,
  getPointByEndpoint: Ke,
  getRectPositionDirection: $i,
  getRectPositionRotate: tr,
  isHorizontal: kx,
  jtopo: Ct,
  mousedownEvent: ar,
  mousedragEvent: vo,
  mouseenterEvent: fr,
  mousemoveEvent: lr,
  mouseoutEvent: pr,
  mouseoverEvent: hr,
  mouseupEvent: cr,
  newInstance: hx,
  pointProjectToLine: Lo,
  randomColor: Tc,
  range: li,
  regClass: to,
  selectedEvent: Ir,
  setProto: u,
  touchendEvent: or,
  touchmoveEvent: ai,
  touchstartEvent: rr,
  unselectedEvent: wr,
  util: Ot,
  vec2: B
}, Symbol.toStringTag, { value: "Module" })), Fc = Rs;
(function(n, e) {
  const t = Rs, x = n();
  for (; []; )
    try {
      if (parseInt(t(162)) / 1 * (parseInt(t(164)) / 2) + parseInt(t(167)) / 3 * (-parseInt(t(163)) / 4) + -parseInt(t(159)) / 5 * (parseInt(t(166)) / 6) + -parseInt(t(161)) / 7 + parseInt(t(156)) / 8 * (-parseInt(t(160)) / 9) + parseInt(t(158)) / 10 * (parseInt(t(157)) / 11) + parseInt(t(165)) / 12 === e)
        break;
      x.push(x.shift());
    } catch {
      x.push(x.shift());
    }
})(Ws, 343708);
let qi = Xr[Fc(168)];
function Rs(n, e) {
  const t = Ws();
  return Rs = function(x, s) {
    return x = x - 156, t[x];
  }, Rs(n, e);
}
Object.assign(qi, Xr), delete qi.jtopo;
function Ws() {
  const n = ["3DECoDs", "jtopo", "680ytXRfK", "666413yiTVgg", "50AclTjG", "3271530wHsojU", "35361iAcRHB", "946477NEMsRL", "20302xLXmuu", "2158748nUcyWE", "10kxdwbb", "19229424mdsoYn", "6gLtXnW"];
  return Ws = function() {
    return n;
  }, Ws();
}
export {
  di as AENode,
  zr as Animation,
  Rr as AnimationSystem,
  M0 as ArcLink,
  C0 as ArcShape,
  k0 as ArrowShape,
  se as AutoFoldLink,
  O0 as BezierCurveShape,
  A0 as BezierLink,
  Z0 as CircleNode,
  ni as CircleShape,
  z as Collection,
  je as Config,
  Zr as Cursor,
  Ge as CurveLink,
  P0 as CurveShape,
  le as Debug,
  Pr as DefaultDarkTheme,
  ve as DefaultLightTheme,
  cx as DefaultZIndexs,
  t0 as Direction,
  C as DisplayObject,
  Be as DomUtil,
  fi as Edge,
  Hr as EffectSystem,
  si as EllipseShape,
  Rt as Endpoint,
  De as EndpointFixedName,
  Jt as EndpointFixedPoint,
  Fs as EndpointFunction,
  Ae as EndpointNearest,
  ux as EndpointSegment,
  gt as EventNames,
  Et as EventTarget,
  Ie as FlexionalLink,
  Q0 as FoldLink,
  ye as FontInfo,
  ii as FontUtil,
  vc as ForceDirectLayout,
  xx as Graph,
  h0 as GraphSystem,
  Ys as HandlerLayer,
  Nc as HtmlImage,
  zt as ImageUtil,
  G as InputEvent,
  Si as InputSystem,
  Hc as InputTextfield,
  Hs as Intersect,
  Ar as Keyboard,
  pt as Layer,
  Lx as LayerLocalDeep,
  Ox as Layout,
  Fr as LayoutSystem,
  S0 as LineShape,
  n0 as LinearGradient,
  R as Link,
  tx as LinkHelper,
  D as Node,
  Gt as NodeHelper,
  qt as OBB,
  N0 as PI2,
  ac as Path,
  Ci as PathLink,
  T as Point,
  Rc as PopupMenu,
  P as Position,
  Qr as PositionInvertMap,
  Y0 as RadialGradient,
  bi as RatioNode,
  ae as RectDefaultPositions,
  vx as RectShape,
  j as Rectangle,
  rt as ResourceLoader,
  Lr as Runtime,
  Br as SelectedGroup,
  qe as SerializerSystem,
  M as Shape,
  Oi as Stage,
  Qi as StageLocalDeep,
  kt as StageMode,
  lt as Style,
  me as StylePattern,
  Wr as StyleSystem,
  ce as TextNode,
  g0 as Theme,
  L0 as TipNode,
  Je as TipShape,
  Dr as Toolbar,
  Wc as Tooltip,
  mo as TopoEvent,
  Mc as TopoPainter,
  lx as Transform,
  mi as VERSION,
  Qe as Vertext,
  T0 as VideoNode,
  ur as clickEvent,
  Vt as convertToEndpoint,
  oi as copyKeyboardEvent,
  _o as copyMouseEvent,
  dr as dblclickEvent,
  br as dragEndEvent,
  gr as dragEvent,
  _r as dropEvent,
  mr as dropoutEvent,
  yr as dropoverEvent,
  Ii as getClass,
  hi as getEndpointNormal,
  hn as getLineIntersectPoint,
  vr as getLineIntersectPoints,
  Ao as getNearestAnchorOnObjects,
  vi as getNearestPointOnLines,
  Do as getNearestPointOnObjectsOBB,
  Bo as getNearestPositionName,
  Co as getParallelLine,
  Oo as getParallelLines,
  Ke as getPointByEndpoint,
  $i as getRectPositionDirection,
  tr as getRectPositionRotate,
  kx as isHorizontal,
  Ct as jtopo,
  ar as mousedownEvent,
  vo as mousedragEvent,
  fr as mouseenterEvent,
  lr as mousemoveEvent,
  pr as mouseoutEvent,
  hr as mouseoverEvent,
  cr as mouseupEvent,
  hx as newInstance,
  Lo as pointProjectToLine,
  Tc as randomColor,
  li as range,
  to as regClass,
  Ir as selectedEvent,
  u as setProto,
  or as touchendEvent,
  ai as touchmoveEvent,
  rr as touchstartEvent,
  wr as unselectedEvent,
  Ot as util,
  B as vec2
};
